精华内容
下载资源
问答
  • [源码下载] 扩展GridView控件(8) - 导出数据源的数据为Excel、Word或Text ...导出数据源的数据为Excel、Word或Text(应保证数据源的类型为DataTable或DataSet) 使用方法: 为SmartGridView添加的方...
    [源码下载]


    扩展GridView控件(8) - 导出数据源的数据为Excel、Word或Text


    作者:webabcd


    /*正式版的实现 开始*/

    介绍
    扩展GridView控件:
    导出数据源的数据为Excel、Word或Text(应保证数据源的类型为DataTable或DataSet)

    使用方法:
    为SmartGridView添加的方法
    Export(string fileName)
    Export(string fileName, ExportFormat exportFormat)
    Export(string fileName, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, int[] columnIndexList, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, int[] columnIndexList, string[] headers, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, string[] columnNameList, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, string[] columnNameList, string[] headers, ExportFormat exportFormat, Encoding encoding)



    关键代码
    using System;
    using System.Collections.Generic;
    using System.Text;

    using System.Data;
    using System.Web.UI.WebControls;

    namespace YYControls
    {
        
    /**//// <summary>
        
    /// SmartGridView类的属性部分
        
    /// </summary>

        public partial class SmartGridView
        
    {
            
    /**//// <summary>
            
    /// 导出SmartGridView的数据源的数据
            
    /// </summary>
            
    /// <param name="fileName">文件名</param>
            
    /// <param name="exportFormat">导出文件的格式</param>
            
    /// <param name="encoding">编码</param>

            public void Export(string fileName, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();
                Helper.Common.Export(dt, exportFormat, fileName, encoding);
            }


            
    /**//// <summary>
            
    /// 导出SmartGridView的数据源的数据
            
    /// </summary>
            
    /// <param name="fileName">文件名</param>
            
    /// <param name="exportFormat">导出文件的格式</param>

            public void Export(string fileName, ExportFormat exportFormat)
            
    {
                Export(fileName, exportFormat, Encoding.GetEncoding(
    "GB2312"));
            }


            
    /**//// <summary>
            
    /// 导出SmartGridView的数据源的数据为Excel
            
    /// </summary>
            
    /// <param name="fileName">文件名</param>

            public void Export(string fileName)
            
    {
                Export(fileName, ExportFormat.CSV);
            }


            
    /**//// <summary>
            
    /// 导出SmartGridView的数据源的数据
            
    /// </summary>
            
    /// <param name="fileName">输出文件名</param>
            
    /// <param name="columnIndexList">导出的列索引数组</param>
            
    /// <param name="exportFormat">导出文件的格式</param>
            
    /// <param name="encoding">编码</param>

            public void Export(string fileName,int[] columnIndexList, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnIndexList, exportFormat, fileName, encoding);
            }


            
    /**//// <summary>
            
    /// 导出SmartGridView的数据源的数据
            
    /// </summary>
            
    /// <param name="fileName">输出文件名</param>
            
    /// <param name="columnNameList">导出的列的列名数组</param>
            
    /// <param name="exportFormat">导出文件的格式</param>
            
    /// <param name="encoding">编码</param>

            public void Export(string fileName, string[] columnNameList, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnNameList, exportFormat, fileName, encoding);
            }


            
    /**//// <summary>
            
    /// 导出SmartGridView的数据源的数据
            
    /// </summary>
            
    /// <param name="fileName">输出文件名</param>
            
    /// <param name="columnIndexList">导出的列索引数组</param>
            
    /// <param name="headers">导出的列标题数组</param>
            
    /// <param name="exportFormat">导出文件的格式</param>
            
    /// <param name="encoding">编码</param>

            public void Export(string fileName, int[] columnIndexList, string[] headers, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnIndexList, headers, exportFormat, fileName, encoding);
            }


            
    /**//// <summary>
            
    /// 导出SmartGridView的数据源的数据
            
    /// </summary>
            
    /// <param name="fileName">输出文件名</param>
            
    /// <param name="columnNameList">导出的列的列名数组</param>
            
    /// <param name="headers">导出的列标题数组</param>
            
    /// <param name="exportFormat">导出文件的格式</param>
            
    /// <param name="encoding">编码</param>

            public void Export(string fileName, string[] columnNameList, string[] headers, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnNameList, headers, exportFormat, fileName, encoding);
            }


            
    /**//// <summary>
            
    /// 获取数据源(DataTable)
            
    /// </summary>

            private DataTable GetDataTable()
            
    {
                DataTable dt 
    = null;

                
    if (this._dataSourceObject is DataTable)
                    dt 
    = (DataTable)this._dataSourceObject;
                
    else if (this._dataSourceObject is DataSet)
                    dt 
    = ((DataSet)this._dataSourceObject).Tables[0];
                
    else
                    
    throw new InvalidCastException("若要导出SmartGridView,应保证其数据源为DataTable或DataSet类型");

                
    if (dt == null)
                    
    throw new ArgumentNullException("数据源""数据源不能为NULL");

                
    return dt;
            }

        }

    }


    /*正式版的实现 结束*/


    /*测试版的实现 开始*/

    介绍
    把GridView导出为一个Excel文件算是一个经常要用到的功能,也比较简单,我们来扩展一个GridView以实现这样的功能。


    控件开发
    1、新建一个继承自GridView的类。
    /**//// <summary>
    /// 继承自GridView
    /// </summary>

    [ToolboxData(@"<{0}:SmartGridView runat='server'></{0}:SmartGridView>")]
    public class SmartGridView : GridView
    {
    }

    2、重写OnRowCommand,以实现把GridView导出为Excel的功能
            /**//// <summary>
            
    /// OnRowCommand
            
    /// </summary>
            
    /// <param name="e"></param>

            protected override void OnRowCommand(GridViewCommandEventArgs e)
            
    {
                
    if (e.CommandName.ToLower() == "exporttoexcel")
                
    {
                    System.Web.HttpContext.Current.Response.ClearContent();
                    
    // e.CommandArgument用“;”隔开两部分,左边的部分为导出Excel的文件名称
                    System.Web.HttpContext.Current.Response.AddHeader("content-disposition""attachment; filename=" + e.CommandArgument.ToString().Split(';')[0+ ".xls");
                    System.Web.HttpContext.Current.Response.ContentType 
    = "application/excel";

                    System.IO.StringWriter sw 
    = new System.IO.StringWriter();
                    HtmlTextWriter htw 
    = new HtmlTextWriter(sw);

                    
    // e.CommandArgument用“;”隔开两部分,右边的部分为需要隐藏的列的索引(列索引用“,”分开)
                    if (e.CommandArgument.ToString().Split(';').Length > 1)
                    
    {
                        
    foreach (string s in e.CommandArgument.ToString().Split(';')[1].Split(','))
                        
    {
                            
    int i;

                            
    if (!Int32.TryParse(s, out i))
                            
    {
                                
    throw new ArgumentException("需要隐藏的列的索引不是整数"); 
                            }


                            
    if (i > this.Columns.Count)
                            
    {
                                
    throw new ArgumentOutOfRangeException("需要隐藏的列的索引超出范围");
                            }


                            
    this.Columns[i].Visible = false;
                        }

                    }


                    
    // 隐藏“导出Excel”按钮
                    ((Control)e.CommandSource).Visible = false;

                    
    // 如果HeaderRow里的控件是button的话,则把它替换成文本
                    foreach (TableCell tc in this.HeaderRow.Cells)
                    
    {
                        
    // TableCell里的每个Control
                        foreach (Control c in tc.Controls)
                        
    {
                            
    // 如果控件继承自接口IButtonControl
                            if (c.GetType().GetInterface("IButtonControl"!= null && c.GetType().GetInterface("IButtonControl").Equals(typeof(IButtonControl)))
                            
    {
                                
    // 如果该控件不是“导出Excel”按钮则把button转换成文本
                                if (!c.Equals(e.CommandSource))
                                
    {
                                    tc.Controls.Clear();
                                    tc.Text 
    = ((IButtonControl)c).Text;
                                }

                            }

                        }

                    }


                    
    // 将服务器控件的内容输出到所提供的 System.Web.UI.HtmlTextWriter 对象中
                    this.RenderControl(htw);

                    System.Web.HttpContext.Current.Response.Write(sw.ToString());
                    System.Web.HttpContext.Current.Response.End();
                }


                
    base.OnRowCommand(e);
            }



    控件使用
    添加这个控件到工具箱里,然后拖拽到webform上,在GridView内加一个按钮,把CommandName属性设置为“ExportToExcel”,CommandArgument属性的值用“;”做分隔符分为两部分,左边的部分为导出Excel的文件名称,右边的部分为需要隐藏的列的索引(列索引用“,”分开)
    ObjData.cs
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    using System.ComponentModel;

    /**//// <summary>
    /// OjbData 的摘要说明
    /// </summary>

    public class OjbData
    {
        
    public OjbData()
        
    {
            
    //
            
    // TODO: 在此处添加构造函数逻辑
            
    //
        }


        [DataObjectMethod(DataObjectMethodType.Select, 
    true)]
        
    public DataTable Select()
        
    {
            DataTable dt 
    = new DataTable();
            dt.Columns.Add(
    "no"typeof(string));
            dt.Columns.Add(
    "name"typeof(string));

            
    for (int i = 0; i < 30; i++)
            
    {
                DataRow dr 
    = dt.NewRow();
                dr[
    0= "no" + i.ToString().PadLeft(2'0');
                dr[
    1= "name" + i.ToString().PadLeft(2'0');

                dt.Rows.Add(dr);
            }


            
    return dt;
        }

    }


    Default.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title>SmartGridView测试</title>
    </head>
    <body>
        
    <form id="form1" runat="server">
            
    <div>
                
    <yyc:SmartGridView ID="SmartGridView1" runat="server" AutoGenerateColumns="False"
                    DataSourceID
    ="ObjectDataSource1">
                    
    <Columns>
                        
    <asp:TemplateField ItemStyle-Width="50px">
                            
    <headertemplate>
                                
    <asp:Button id="btnExportToExcel" runat="server" Text="Excel" CommandName="ExportToExcel" CommandArgument="ExcelFileName;5,6" />
                            
    </headertemplate>
                            
    <itemtemplate>
                                
    <%# Container.DataItemIndex + 1 %>
                            
    </itemtemplate>
                        
    </asp:TemplateField>
                        
    <asp:BoundField DataField="no" HeaderText="序号" SortExpression="no" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="no" HeaderText="序号" SortExpression="no" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="no" HeaderText="序号" SortExpression="no" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name" ItemStyle-Width="100px" />
                    
    </Columns>
                
    </yyc:SmartGridView>
                
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Select"
                    TypeName
    ="OjbData"></asp:ObjectDataSource>
            
    </div>
        
    </form>
    </body>
    </html>

    注:为了防止出错要在.cs代码中加上下面这句
    public override void VerifyRenderingInServerForm(Control control)
        
    {

        }

    另外,如果你的GridView中含有命令按钮的话要在.aspx页面的头部中加上下面这个属性
    EnableEventValidation="false"

    /*测试版的实现 结束*/



    OK
    [源码下载]

    原文地址: http://www.cnblogs.com/webabcd/archive/2008/06/27/632863.html#1238389

    转载于:https://www.cnblogs.com/9who/archive/2008/07/28/1254471.html

    展开全文
  • Delphi创建Word2000文档的Demo演示,以Office 2000作为服务器编写,若以 Office XP作为服务器,请在装有 Office XP的...程序中将创建新的Word文档、关闭拼写检查,如果进行拼写检查,将减缓Winword速度、插入数据等操作
  • 介绍扩展GridView控件:导出数据源的数据为Excel、Word或Text(应保证数据源的类型为DataTable或DataSet)使用方法:为SmartGridView添加的方法Export(string fileNa...
    介绍
    扩展GridView控件:
    导出数据源的数据为Excel、Word或Text(应保证数据源的类型为DataTable或DataSet)

    使用方法:
    为SmartGridView添加的方法
    Export(string fileName)
    Export(string fileName, ExportFormat exportFormat)
    Export(string fileName, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, int[] columnIndexList, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, int[] columnIndexList, string[] headers, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, string[] columnNameList, ExportFormat exportFormat, Encoding encoding)
    Export(string fileName, string[] columnNameList, string[] headers, ExportFormat exportFormat, Encoding encoding)



    关键代码
    using System;
    using System.Collections.Generic;
    using System.Text;

    using System.Data;
    using System.Web.UI.WebControls;

    namespace YYControls
    {
        
    /**//// 
        
    /// SmartGridView类的属性部分
        
    /// 

        public partial class SmartGridView
        
    {
            
    /**//// 
            
    /// 导出SmartGridView的数据源的数据
            
    /// 
            
    /// 文件名
            
    /// 导出文件的格式
            
    /// 编码

            public void Export(string fileName, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();
                Helper.Common.Export(dt, exportFormat, fileName, encoding);
            }


            
    /**//// 
            
    /// 导出SmartGridView的数据源的数据
            
    /// 
            
    /// 文件名
            
    /// 导出文件的格式

            public void Export(string fileName, ExportFormat exportFormat)
            
    {
                Export(fileName, exportFormat, Encoding.GetEncoding(
    "GB2312"));
            }


            
    /**//// 
            
    /// 导出SmartGridView的数据源的数据为Excel
            
    /// 
            
    /// 文件名

            public void Export(string fileName)
            
    {
                Export(fileName, ExportFormat.CSV);
            }


            
    /**//// 
            
    /// 导出SmartGridView的数据源的数据
            
    /// 
            
    /// 输出文件名
            
    /// 导出的列索引数组
            
    /// 导出文件的格式
            
    /// 编码

            public void Export(string fileName,int[] columnIndexList, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnIndexList, exportFormat, fileName, encoding);
            }


            
    /**//// 
            
    /// 导出SmartGridView的数据源的数据
            
    /// 
            
    /// 输出文件名
            
    /// 导出的列的列名数组
            
    /// 导出文件的格式
            
    /// 编码

            public void Export(string fileName, string[] columnNameList, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnNameList, exportFormat, fileName, encoding);
            }


            
    /**//// 
            
    /// 导出SmartGridView的数据源的数据
            
    /// 
            
    /// 输出文件名
            
    /// 导出的列索引数组
            
    /// 导出的列标题数组
            
    /// 导出文件的格式
            
    /// 编码

            public void Export(string fileName, int[] columnIndexList, string[] headers, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnIndexList, headers, exportFormat, fileName, encoding);
            }


            
    /**//// 
            
    /// 导出SmartGridView的数据源的数据
            
    /// 
            
    /// 输出文件名
            
    /// 导出的列的列名数组
            
    /// 导出的列标题数组
            
    /// 导出文件的格式
            
    /// 编码

            public void Export(string fileName, string[] columnNameList, string[] headers, ExportFormat exportFormat, Encoding encoding)
            
    {
                DataTable dt 
    = GetDataTable();

                Helper.Common.Export(dt, columnNameList, headers, exportFormat, fileName, encoding);
            }


            
    /**//// 
            
    /// 获取数据源(DataTable)
            
    /// 

            private DataTable GetDataTable()
            
    {
                DataTable dt 
    = null;

                
    if (this._dataSourceObject is DataTable)
                    dt 
    = (DataTable)this._dataSourceObject;
                
    else if (this._dataSourceObject is DataSet)
                    dt 
    = ((DataSet)this._dataSourceObject).Tables[0];
                
    else
                    
    throw new InvalidCastException("若要导出SmartGridView,应保证其数据源为DataTable或DataSet类型");

                
    if (dt == null)
                    
    throw new ArgumentNullException("数据源""数据源不能为NULL");

                
    return dt;
            }

        }

    }


    /*正式版的实现 结束*/


    /*测试版的实现 开始*/

    介绍
    把GridView导出为一个Excel文件算是一个经常要用到的功能,也比较简单,我们来扩展一个GridView以实现这样的功能。


    控件开发
    1、新建一个继承自GridView的类。
    /**//// 
    /// 继承自GridView
    /// 

    [ToolboxData(@"{0}:SmartGridView>")]
    public class SmartGridView : GridView
    {
    }

    2、重写OnRowCommand,以实现把GridView导出为Excel的功能
            /**//// 
            
    /// OnRowCommand
            
    /// 
            
    /// 

            protected override void OnRowCommand(GridViewCommandEventArgs e)
            
    {
                
    if (e.CommandName.ToLower() == "exporttoexcel")
                
    {
                    System.Web.HttpContext.Current.Response.ClearContent();
                    
    // e.CommandArgument用“;”隔开两部分,左边的部分为导出Excel的文件名称
                    System.Web.HttpContext.Current.Response.AddHeader("content-disposition""attachment; filename=" + e.CommandArgument.ToString().Split(';')[0+ ".xls");
                    System.Web.HttpContext.Current.Response.ContentType 
    = "application/excel";

                    System.IO.StringWriter sw 
    = new System.IO.StringWriter();
                    HtmlTextWriter htw 
    = new HtmlTextWriter(sw);

                    
    // e.CommandArgument用“;”隔开两部分,右边的部分为需要隐藏的列的索引(列索引用“,”分开)
                    if (e.CommandArgument.ToString().Split(';').Length > 1)
                    
    {
                        
    foreach (string s in e.CommandArgument.ToString().Split(';')[1].Split(','))
                        
    {
                            
    int i;

                            
    if (!Int32.TryParse(s, out i))
                            
    {
                                
    throw new ArgumentException("需要隐藏的列的索引不是整数"); 
                            }


                            
    if (i > this.Columns.Count)
                            
    {
                                
    throw new ArgumentOutOfRangeException("需要隐藏的列的索引超出范围");
                            }


                            
    this.Columns[i].Visible = false;
                        }

                    }


                    
    // 隐藏“导出Excel”按钮
                    ((Control)e.CommandSource).Visible = false;

                    
    // 如果HeaderRow里的控件是button的话,则把它替换成文本
                    foreach (TableCell tc in this.HeaderRow.Cells)
                    
    {
                        
    // TableCell里的每个Control
                        foreach (Control c in tc.Controls)
                        
    {
                            
    // 如果控件继承自接口IButtonControl
                            if (c.GetType().GetInterface("IButtonControl"!= null && c.GetType().GetInterface("IButtonControl").Equals(typeof(IButtonControl)))
                            
    {
                                
    // 如果该控件不是“导出Excel”按钮则把button转换成文本
                                if (!c.Equals(e.CommandSource))
                                
    {
                                    tc.Controls.Clear();
                                    tc.Text 
    = ((IButtonControl)c).Text;
                                }

                            }

                        }

                    }


                    
    // 将服务器控件的内容输出到所提供的 System.Web.UI.HtmlTextWriter 对象中
                    this.RenderControl(htw);

                    System.Web.HttpContext.Current.Response.Write(sw.ToString());
                    System.Web.HttpContext.Current.Response.End();
                }


                
    base.OnRowCommand(e);
            }



    控件使用
    添加这个控件到工具箱里,然后拖拽到webform上,在GridView内加一个按钮,把CommandName属性设置为“ExportToExcel”,CommandArgument属性的值用“;”做分隔符分为两部分,左边的部分为导出Excel的文件名称,右边的部分为需要隐藏的列的索引(列索引用“,”分开)
    ObjData.cs
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    using System.ComponentModel;

    /**//// 
    /// OjbData 的摘要说明
    /// 

    public class OjbData
    {
        
    public OjbData()
        
    {
            
    //
            
    // TODO: 在此处添加构造函数逻辑
            
    //
        }


        [DataObjectMethod(DataObjectMethodType.Select, 
    true)]
        
    public DataTable Select()
        
    {
            DataTable dt 
    = new DataTable();
            dt.Columns.Add(
    "no"typeof(string));
            dt.Columns.Add(
    "name"typeof(string));

            
    for (int i = 0; i < 30; i++)
            
    {
                DataRow dr 
    = dt.NewRow();
                dr[
    0= "no" + i.ToString().PadLeft(2'0');
                dr[
    1= "name" + i.ToString().PadLeft(2'0');

                dt.Rows.Add(dr);
            }


            
    return dt;
        }

    }


    Default.aspx
    @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title>SmartGridView测试title>
    head>
    <body>
        
    <form id="form1" runat="server">
            
    <div>
                
    <yyc:SmartGridView ID="SmartGridView1" runat="server" AutoGenerateColumns="False"
                    DataSourceID
    ="ObjectDataSource1">
                    
    <Columns>
                        
    <asp:TemplateField ItemStyle-Width="50px">
                            
    <headertemplate>
                                
    <asp:Button id="btnExportToExcel" runat="server" Text="Excel" CommandName="ExportToExcel" CommandArgument="ExcelFileName;5,6" />
                            
    headertemplate>
                            
    <itemtemplate>
                                
    # Container.DataItemIndex + 1 %>
                            
    itemtemplate>
                        
    asp:TemplateField>
                        
    <asp:BoundField DataField="no" HeaderText="序号" SortExpression="no" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="no" HeaderText="序号" SortExpression="no" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="no" HeaderText="序号" SortExpression="no" ItemStyle-Width="100px" />
                        
    <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name" ItemStyle-Width="100px" />
                    
    Columns>
                
    yyc:SmartGridView>
                
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Select"
                    TypeName
    ="OjbData">asp:ObjectDataSource>
            
    div>
        
    form>
    body>
    html>

    注:为了防止出错要在.cs代码中加上下面这句
    public override void VerifyRenderingInServerForm(Control control)
        
    {

        }

    另外,如果你的GridView中含有命令按钮的话要在.aspx页面的头部中加上下面这个属性
    EnableEventValidation="false"

    /*测试版的实现 结束*/


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25284529/viewspace-689064/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/25284529/viewspace-689064/

    展开全文
  • ES2010引用MYSQL外部数据源教程 整理:安哥 qq:29154754 zxa2000@163.com 20130827 一安装mysql的ODBC驱动程序mysql官网有下载 二mysqlODBC数据源配置 1mysql驱动程序安装好后点开始/管理工具/数据源添加 点完成 ...
  • pd导出word表跟一般软件的导出...需要先通过powerdesigner的反向工程,根据数据库生成physical model,在反向工程之前先建好数据源 1.1、创建数据源 1、database》configureConnections 2、选择,connection ...

    pd导出word表跟一般软件的导出功能类似,通过模版定义格式和样式,然后导出自定义格式的word。

    一、导出word之前先根据数据库反向生成物理模型

    需要先通过powerdesigner的反向工程,根据数据库生成physical model,在反向工程之前先建好数据源

    1.1、创建数据源

    1、database》configureConnections

    2、选择,connection Profiles

    3、点击“add data source”

    如下:

    配置完成,点击“Test Connection”按钮,测试成功即可。

    二、反向工程生成表结构

    1、file》reverse engineer 》database,如下图所示:

    2、选择使用的数据库,如下

    3、点击确定

    选择已经配置好的数据源

    4、点击确定

    输入用户名、密码,连接即可

    5、连接成功后,就会显示所有的表,你可以针对性的选择你需要的表进行生成

    如下,点击ok即可。

    就生成了physical model。

    三、生成的物理模型table面板上没有显示注释,如何让注释显示在table面板上:

    1、Tools》DisplayPreferences,点击进去

    2、选择table,点击“Advance”

     

    3、columns》listcolumns点击预览

    将code移到第一行,然后点击“ok”。

    弹出

    选择“ALL symbols”,点击“ok”即可。

    4、执行脚本

    comment2name.vbs 将显示name的部分由comment来代替掉。将以下脚本代码复制粘贴到以上对话框的空白处。

    Option   Explicit    
    ValidationMode   =   True    
    InteractiveMode   =   im_Batch    
      
    Dim   mdl   '   the   current   model    
      
    '   get   the   current   active   model    
    Set   mdl   =   ActiveModel    
    If   (mdl   Is   Nothing)   Then    
          MsgBox   "There   is   no   current   Model "    
    ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then    
          MsgBox   "The   current   model   is   not   an   Physical   Data   model. "    
    Else    
          ProcessFolder   mdl    
    End   If    
      
    Private   sub   ProcessFolder(folder)    
    On Error Resume Next   
          Dim   Tab   'running     table    
          for   each   Tab   in   folder.tables    
                if   not   tab.isShortcut   then    
                      tab.name   =   tab.comment   
                      Dim   col   '   running   column    
                      for   each   col   in   tab.columns    
                      if col.comment="" then   
                      else  
                            col.name=   col.comment    
                      end if  
                      next    
                end   if    
          next    
      
          Dim   view   'running   view    
          for   each   view   in   folder.Views    
                if   not   view.isShortcut   then    
                      view.name   =   view.comment    
                end   if    
          next    
      
          '   go   into   the   sub-packages    
          Dim   f   '   running   folder    
          For   Each   f   In   folder.Packages    
                if   not   f.IsShortcut   then    
                      ProcessFolder   f    
                end   if    
          Next    
    end   sub 
    

    接着点击保存再运行脚本。切记,不要先运行再保存!!!

    接着点击运行按钮RUN。

    这样看下注释就加上了。

    二、生成word

    一:基本使用介绍

    1. 在工具栏中选择【Report -->Reports】,如下图

    2. 点击第二个图标创建一个Report,如下图

    该wizard中有三个信息

    Report name Report : Report名字,也是导出word的文件名

    Language :语言,有中文汉化包选择Simplified Chinese

    Report template : Report模版,如果所示软件本身自带了几个模版,在安装目录Resource Files\Report Templates下

     

    3. 选一个默认模版Standard Physical Report,确认后会发现多了两个区Available items和Report items

    Available items :软件提供的可用模块,是导出word模版的一个小组件,双击就会添加到Report items区域

    Report items : 我选中的模版小组件

    4. 根据模版导出word,在工作空间区域,右键Reports下我们建的Report,如下图点击生产RTF格式

    以为系统模版要导出的数据比较多会很慢,导出的word格式如下图所示

    二 : 定制导出模版

    当然这不是我们想要的word,下面看如何做一个自定义模版

    1. 在工具栏中选择【Report -->Reports】,如下图

    点击第二个图标创建一个Template,如下图

    2. 选中Physical Data Model,OK确认

    在Available items区域找到List of Tables和List of Table Columns,双击添加到Template items区域

    一般导出word也就只需要这两个

    List of Tables :所有表的清单,默认显示表名和中文描述,一般不需要改动

    List of Table Columns :表的列信息

    3. 右键List of Table Columns,如下图所示

    Format:字体设置,一般用默认的

    Layout:需要显示的属性和显示的宽度

    Selection:排序和属性过滤,一般用默认的

    4. 设置导出word文档的页眉和页脚,右键模版如下图,不爽的是第一和第二页的页眉页脚这个设置不了

    5. 设置title page,右键report如下图

     

    选了no title page竟然没效果,郁闷

     

    6. 做了一个通用的模版,显示表清单和表列清单,需要下载点击这里,下面是导出后的效果图

     

    文档结构图:

    首页:

    表清单:

    表列清单:

    展开全文
  • 向项目中添加新的数据源 1.创建一个名为“我的 Word 操作窗格”的Word 文档项目。 在向导中,选择“创建新文档”。 2.在“解决方案资源管理器”中选择“我的 Word 操作窗格”项目。 3.在“项目”菜单上,单击...

    image

     

    向项目中添加新的数据源

    1.创建一个名为“我的 Word 操作窗格”的Word 文档项目。 在向导中,选择“创建新文档”。

    2.在“解决方案资源管理器”中选择“我的 Word 操作窗格”项目。

    3.在“项目”菜单上,单击“添加新项”。

    4.在“添加新项”对话框中选择“操作窗格控件”,将它命名为“ActionsControl”,然后单击“添加”

    5.如果“数据源”窗口不可见,请单击“数据”菜单上的“显示数据源”。

    6.单击“添加新数据源”以启动“数据源配置向导”。

    7.选择到 Northwind 示例 SQL Server 数据库的数据连接,或者使用“新建连接”按钮添加新连接。

    8.展开“数据库对象”窗口中的“表”节点。

    9.选择“Suppliers”表和“Products”表旁边的复选框。

    10.单击“完成”。

    将数据绑定 Windows 窗体控件添加到操作窗格控件

    1.在“数据源”窗口中展开“Suppliers”表。单击“Company Name”节点上的下拉箭头并选择“ComboBox”。

    ~@056F9$XT]558KK)J0I[0E

    2.将“CompanyName”从“数据源”窗口拖动到操作窗格控件中。

    操作窗格控件中便会创建一个 ComboBox 控件。 同时,会将一个名为 SuppliersBindingSource 的 BindingSource、一个表适配器和一个 DataSet 添加到组件栏的项目中。

    3.选择“组件”栏中的 SuppliersBindingNavigator 并按 Delete。

    4.在“数据源”窗口中,展开“Suppliers”表的子表“Products”。

    5.单击“ProductName”节点上的下拉箭头,然后选择“ListBox”。

    6.将“ProductName”拖动到操作窗格控件中。

    7.右击 Button,单击快捷菜单上的“属性”并更改以下属性

    Name:insert,文本:插入

    使用数据加载控件

    1.在 ActionsControl 类的 Load 事件处理程序中,添加以下代码。

    private void ActionsControl_Load(object sender, EventArgs e)
    {
    this.suppliersTableAdapter.Fill(this.northwindDataSet.Suppliers);
    this.productsTableAdapter.Fill(this.northwindDataSet.Products);
    }

    2.在 C# 中,必须将事件处理程序附加到 Load 事件。 可以将这些代码放在 ActionsControl 构造函数中 InitializeComponent调用的后面。

    this.Load += new EventHandler(ActionsControl_Load);

    设置控件的数据绑定属性
    1. 选择 CompanyNameComboBox 控件。

    2. 在“属性”窗口中单击“DataSource”属性右侧的按钮,然后选择“SuppliersBindingSource”。

    3. 单击“DisplayMember”属性右侧的按钮,然后选择“CompanyName”。

    4. 展开“DataBindings”属性,单击“Text”属性右侧的按钮,然后选择“None”。

    5. 选择 ProductNameListBox 控件。

    6. 在“属性”窗口中单击“DataSource”属性右侧的按钮,然后选择“productsBindingSource”。

    7. 单击“DisplayMember”属性右侧的按钮,然后选择“ProductName”。

    8. 展开“DataBindings”属性,单击“SelectedValue”属性右侧的按钮,然后选择“None”。

     

    添加方法以将数据插入表中

    下一个任务是从绑定控件中读取数据并填充 Word 文档中的表。 首先,创建一个用于设置表格标题格式的过程,然后添加 AddData 方法以创建一个 Word 表并设置其格式。

    设置表格标题的格式

    在 ActionsControl 类中创建一个方法,用以设置表格标题的格式。

    static void SetHeadings(Microsoft.Office.Interop.Word.Cell tblCell, string text)
    {
    tblCell.Range.Text = text;
    tblCell.Range.Font.Bold = 1;
    tblCell.Range.ParagraphFormat.Alignment =
    Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    }

     

    创建表

    在 ActionsControl 类中编写一个方法,此方法将在不存在表的情况下创建一个表,并将操作窗格中的数据添加到此表中。

    private void AddData(System.Data.DataRow row, string companyName)
    {
    object missing = System.Type.Missing;

    // Create a table if it doesn't already exist.
    if (Globals.ThisDocument.Tables.Count == 0)
    {
    try
    {
    // Create a table.
    Microsoft.Office.Interop.Word.Table tbl = Globals.ThisDocument.Tables.Add
    (Globals.ThisDocument.Application.Selection.Range, 1, 4, ref missing, ref missing);

    // Insert headings.
    SetHeadings(tbl.Cell(1, 1), "Company Name");
    SetHeadings(tbl.Cell(1, 2), "Product Name");
    SetHeadings(tbl.Cell(1, 3), "Quantity");
    SetHeadings(tbl.Cell(1, 4), "Unit Price");
    }
    catch (Exception ex)
    {
    MessageBox.Show("Problem creating Products table: " + ex.Message,
    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }

    // Add data from data row to the table.
    Microsoft.Office.Interop.Word.Selection selection = Globals.ThisDocument.Application.Selection;

    if (selection.Tables.Count > 0)
    {
    Microsoft.Office.Interop.Word.Row newRow = Globals.ThisDocument.Tables[1].Rows.Add(ref missing);

    newRow.Range.Font.Bold = 0;

    newRow.Range.ParagraphFormat.Alignment =
    Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;

    newRow.Cells[4].Range.ParagraphFormat.Alignment =
    Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;

    newRow.Cells[1].Range.Text = companyName;
    newRow.Cells[2].Range.Text = row["ProductName"].ToString();
    newRow.Cells[3].Range.Text = row["QuantityPerUnit"].ToString();
    newRow.Cells[4].Range.Text = Math.Round(Convert.ToDouble(row["UnitPrice"])).ToString("#,##0.00");
    }
    else
    {
    MessageBox.Show("Cursor must be within a table.",
    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }

     

    在 Word 表中插入文本

    1.将以下代码添加到“插入”按钮的 Click 事件处理程序中。

    private void Insert_Click(object sender, System.EventArgs e)
    {
    System.Data.DataTable tbl = northwindDataSet.Products;
    System.Data.DataRow[] rows;

    // Check if a product is selected.
    if (this.productNameListBox.SelectedIndex >= 0)
    {
    System.Data.DataRowView productRow = (System.Data.DataRowView)this.productNameListBox.SelectedItem;

    string product = productRow.Row["ProductName"].ToString();
    string company = this.companyNameComboBox.Text;

    // Return the data row from the selected product.
    rows = tbl.Select("[ProductName] = '" + product.Replace("'", "''") + "'");

    this.AddData(rows[0], company);
    }
    else
    {
    MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK);
    }
    }

    2.在 C# 中,必须为按钮的 Click 事件创建事件处理程序。 可以将此代码放置在 ActionsControl 类的 Load 事件处理程序中。

    this.Insert.Click += new EventHandler(Insert_Click);

     

    显示操作窗格

    1.在“解决方案资源管理器”中右击“ThisDocument.vb”或“ThisDocument.cs”,再单击快捷菜单上的“查看代码”。

    2.在 ThisDocument 类的顶部创建一个新的控件实例,使其看上去与下面的示例类似。

    private ActionsControl actions = new ActionsControl();

    3.向 ThisDocument 的 Startup 事件处理程序中添加代码,使其看上去与下面的示例类似。

    this.ActionsPane.Controls.Add(actions);

     

    测试应用程序

    现在可以对文档进行测试,以验证当文档打开时是否出现操作窗格。 测试操作窗格上控件之间的主/从关系,并确保单击“插入”按钮时数据会填充到 Word 表中

    1. 按 F5 运行项目。

    2. 确认操作窗格可见。

    3. 从组合框中选择一个公司,并确认“Products”列表框中的项随之发生变化。

    4. 选择一个产品,单击操作窗格上的“插入”,并确认产品详细信息会随之添加到 Word 表中。

    5. 插入来自不同公司的其他产品。

     

    源码下载:/Files/timy/MyBasicActionsPane.rar

    转载于:https://www.cnblogs.com/timy/archive/2011/04/06/2007203.html

    展开全文
  • //for循环添加数据 for(int i=0;i();i++){ Object[] o=list.get(i); for(int j=0;j;j++){ Dispatch item = Dispatch.call(cells, "Item",new Variant(i+2),new Variant(j+2)).toDispatch(); ...
  • 由于公众号规则改变,为防止以后看不到我们:请务必点击上方蓝字【Excel三十六计】→右上角菜单【···】→设为星标★在以前的文章中,我们学了关于...首先我们来看下源数据:需求:如果次数为6,那么就要拆分成...
  • Word邮件合并时根据指定条件分页

    千次阅读 2019-12-21 15:30:20
    思路 首先在数据源中设置分页标识,比如加一列,当...在Word添加if then域,判断指定值为1时则添加分页符,否则不添加内容 数据源 PageBreak是用于判断是否分页的条件列,根据公式设置 邮件模板 ...
  • MySQL生成word文档

    千次阅读 2018-06-19 19:52:40
    把MySQL的表结构生成word文档说明的时候,可以借助以下方法: 1. 下载驱动包 ...2. 先把这三个东西下载,安装这两个驱动包。如图 3. 安装完成后,打开控制面板,管理工具 ...选择刚才安装的数据源,然...
  • 通过极简API实现javaBean即数据源,模板即样式的Word导出,提供以下功能: 基本文本的输出,文本占位符样式即输出文本样式。 文本行、表格行单行或多行的遍历输出,并能够进行循环嵌套。 提供数据处理的插件,通过...
  • 然后往这个环境添加数据源,比如env.socketTextStream,和env.addSource(kafkaSource); 自定义算子,算子的作用是对传输过来的每一条数据进行处理,是数据处理的核心部分。在下面的程序里,我们重写了flatMap()方法...
  • word2007中生成统计图的两种方式

    千次阅读 2012-11-21 08:24:13
    1、添加chart,然后选择某个excel中的数据源 2、直接从excel里复制生成好的统计图   两种方式生成的图都一样, 但是docx跟xlsx文件的关系不一样   第一张情况,xlsx文件会被嵌入到docx里面去 第二种情况,...
  • 2、安装mysql-connector-odbc并配置数据源 安装略。 配置过程:控制面板->管理工具->ODBC数据源(对应的位数)->用户DNS->添加->选择mysql odbc驱动,并配置相关连接信息。 ...
  • 于是想到excle的ODBC数据源,结果我装的是精简版的Excel,没有这个功能。卸载吧,一时半会也找不到合适的安装介质。于是想到了Oracle的load数据方式(文本平板数据),但是我没有装Oracle,于是想到...
  • 邮件合并添加照片

    2018-05-30 15:32:00
    2、在WORD中打开“邮件合并”工具栏,在数据源中打开相应的EXCEL文件; 3、在要插照片处,先打开“插入”菜单“域”命令,在“域名”项中选择“includepicture”,然后在对话框中间的“文件名”处随便输入几个字...
  • Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
  • 明日科技《C#示例代码》(1-4)

    热门讨论 2012-07-06 10:38:51
    注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例代码》(1-4)、明日科技《C#示例代码》(1-4)、明日科技《C#示例代码》(5-8)、明日科技《C#示例代码》(9-12)、明日科技《C#...
  • 明日科技《C#示例代码》(13-16)

    热门讨论 2012-07-06 12:44:37
    注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例代码》(1-4)、明日科技《C#示例代码》(1-4)、明日科技《C#示例代码》(5-8)、明日科技《C#示例代码》(9-12)、明日科技《C#...
  • 题记 常常会用到一个模板生成多个\多份文档、...Word提供了一个Mail Merge的功能,该功能允许一个文档模板从一个数据源中提取关键字段,替换模板中的内容,生成多个文档。特别适用于通知、群发邮件、证书的生成。...
  • 若干程序资料12.rar

    热门讨论 2012-06-11 22:11:26
    2012-06-11 21:10 18,808 为智能电子钟添加阴历计时功能.rar 2012-06-11 21:35 38,896 二叉树的遍历.zip 2012-06-11 21:13 224,515 人脸识别程序(1).rar 2012-06-11 21:13 224,515 人脸识别程序.rar 2012-06-11 ...
  •  在查看员工信息时,可以对当前员工的家庭情况、培训情况进行添加、修改、删除的操作。  方便快捷的全方位数据查询。  按照指定的条件对员工进行统计。  可以将员工信息以表格的形式插入到Word文档中。  ...
  • 电子教案管理系统ASP程序

    热门讨论 2006-02-23 09:05:59
    系统安装 =========================================== 在支持ASP的服务器上解开本软件包,按源路径无需设置数据源。 首页面地址是:default.asp 临时系统管理员帐号:刘太祥 临时系统管理员密码:88888888 ...
  • java范例开发大全代码

    热门讨论 2011-10-30 23:31:51
     实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209  实例140 按顺序创建文件 210  实例141 按顺序读取文件 211  实例142 追加文件内容 211  实例143 只显示文件中指定的字符 214  实例...
  • 用Delphi实现Word文件的预览

    热门讨论 2005-07-13 15:37:57
    因为该方法只是我们的 applet 类的一个成员,所以我们将为 applet 添加数据成员以存储任何需要的数据。您可以把我们将使用的数据成员插入到 applet 类中,如下所示: double totalAngle; // Current angular ...
  • Java范例开发大全 (程序)

    热门讨论 2011-04-27 07:47:22
     实例219 LinkedList的添加删除操作 395  实例220 运用Vector 397  实例221 改变Properties文件中的键值 399  第13章 多线程编程(教学视频:121分钟) 405  13.1 多线程的五种基本状态 405  实例222 ...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 172
精华内容 68
关键字:

word添加数据源