当前位置:软件学习 > Excel >>

C#数据库数据导入导出系列之二 数据库导出到Excel上

 

在日常的项目中,Excel,Word,txt等格式的数据导入到数据库中是很常见的,我在这里做一下总结

 

这里将分为Asp.net导入Sql Server,Oracle数据库和WinForm导入Sql Server,Oracle数据库

1,使用DataGird生成Excel

 

       基本思想:

 

            (1)将数据从数据库中查询出来,绑定到DataGrid控件中,这个DataGirdle控件知识作为数据的一个承载,不需要显示在页面中

 

            (2)使用StringWriter将DataGrid读出来,在使用Response的另存为功能,将html页存为Xls格式的Excel文件。

 

       代码:

 

 

//导出按钮 

protected void ibtnExport_Click(object sender, ImageClickEventArgs e) 

    ExportDataGrid("application/ms-excel", "test.xls"); //导到Excel 

具体实现

 

 

#region 使用DataGrid生成Excel 

        /// <summary> 

        /// 使用DataGrid生成Excel 

        /// </summary> 

        /// <param name="FileType">文件类型MIME类型</param> 

        /// <param name="FileName">文件名</param> 

        private void ExportDataGrid(string FileType, string FileName) //从DataGrid导出 

        { 

            System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid(); 

 

            //这里使用的是IBatis与数据库通信,大家可以使用ADO或者别的方式查询数据 

            dg.DataSource = Helper.ContactExport().ExportDataIntoExcel(); 

            dg.DataBind(); 

 

            //定义文档类型、字符编码    

            Response.Clear(); 

            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); 

            Response.Charset = "UTF-8"; 

            Response.ContentEncoding = Encoding.Default; 

            Response.ContentType = FileType; 

            dg.EnableViewState = false; 

            //定义一个输入流    

            StringWriter tw = new StringWriter(); 

            HtmlTextWriter hw = new HtmlTextWriter(tw); 

            //目标数据绑定到输入流输出  

            dg.RenderControl(hw); 

            //GvContract 绑定datagrid,或其他支持obj.RenderControl()属性的控件    

            //ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "info", tw.ToString(), false); 

            Response.Write(tw.ToString()); 

            Response.End(); 

        } 

        #endregion 

        注意事项:

 

              (1)由于我的页面中有Ajax的UpdatePanel控件,所以在代码中需要加入如下代码:

 

 

public override void VerifyRenderingInServerForm(Control control) 

    //base.VerifyRenderingInServerForm(control); 

              (2)在UpdatePanel的Triggers节点下注册按钮

 

 

<Triggers> 

    <asp:PostBackTrigger ControlID="ibtnExport" /> 

</Triggers> 

下面给出一个在网上下载的一个已经封装好的类

 

 

using System; 

using System.Collections.Generic; 

using System.Linq; 

using System.Web; 

using System.Web.UI.WebControls; 

using System.Web.UI; 

using System.Data; 

using System.Text; 

using System.Globalization; 

using System.IO; 

 

namespace VMS.Test.Classes 

    public class ExcelHelper {  

 

        #region Fields  

  

        string _fileName;  

        DataTable _dataSource;          

        string[] _titles = null;   

        string[] _fields = null;  

        int _maxRecords = 1000;  

 

        #endregion  

 

        #region Properties  

  

        /**//// <summary>  

        /// 限制输出到Excel 的最大记录数。超出则抛出异常  

        /// </summary>  

        public int MaxRecords {  

            set { _maxRecords = value; }  

            get { return _maxRecords; }  

        }  

  

        /**//// <summary>  

        /// 输出到浏览器的Excel 文件名  

        /// </summary>  

        public string FileName {  

            set { _fileName = value;

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,