利用HttpResponse将DataTable数据导出为Excel/Word/Txt/Html文档

Web项目中,很多时候须要实现将查询的数据集导出为Excel、Word等文档的功能,很多时候不太希望在工程中添加对Office组件相关的DLL的引用,甚至有时候受到Office不同版本的影响,导致在不同的服务器上部署后功能受限,或和其它项目冲突,那么,使用这种简单粗暴的方式,可能会解决部分猿类的烦恼忧愁。

public static bool DataTableToExcel(System.Data.DataTable dataTable, string fileName)
{
    if (dataTable == null) return false;
    if (string.IsNullOrWhiteSpace(fileName)) return false;

    HttpResponse httpResponse = HttpContext.Current.Response;
    //ContentType 指定文件类型可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html
    httpResponse.ContentType = "application/vnd.ms-excel";
    httpResponse.ContentEncoding = Encoding.UTF8;
    //context.Response.Charset = "GB2312";
    //"attachment"表示作为附件下载,可以改成"online"在线打开。"filename=xxx.xls"指定输出文件名,其扩展名和文件类型相符,可为:.doc  .xls .txt .html
    httpResponse.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8) + ".xls");
    //导出文件
    System.IO.StringWriter sw = sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
    //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
    System.Web.UI.WebControls.DataGrid datagrid = datagrid = new System.Web.UI.WebControls.DataGrid();
    datagrid.DataSource = dataTable.DefaultView;
    datagrid.AllowPaging = false;
    datagrid.DataBind();
    //返回客户端
    datagrid.RenderControl(htw);
    httpResponse.Write(sw.ToString());
    httpResponse.End();

    return true;
}

以上代码中指定 ContentType 属性为Excel,即导出Excel格式的文件,稍作修改亦可导出其它类型的文件,不做赘述。当然,也可以把功能函数写的更为通用,通过参数判断导出哪种文件类型,有需要的自己进行改进和优化吧。

另外,在导出文件名称为中文的时候,可能会出现乱码,因此需要使用UrlEncode编码一下。

时间: 2024-10-10 16:21:56

利用HttpResponse将DataTable数据导出为Excel/Word/Txt/Html文档的相关文章

C#将DataTable数据导出到EXCEL的两种方法

1.在非服务器控件的页面导出数据,需要借助一张temp空页面post回后台的数据. 前台:window.location.href = "../Temp.aspx"; 后台: try{ dtSource = Session["MyDataTable"] //假设数据在Session中 if (dtSource == null || dtSource.Rows.Count == 0)            {                return;       

C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)【转载】

上次做了以Excel文件为数据源,进行数据导入,今天,给大家分享一下如何将内存中的datatable以文件流的方式导出为Excel文件,而且个人觉得这个方法非常不错,高效,简单. 技术要点:1.创建文件流,用于写最终的文件StreamWriter sw = new StreamWriter(fileName, false,Encoding.GetEncoding("gb2312")); 2.使用  StringBuilder类把数据组合为长字符串插入到excel文件中,sb.Appen

C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)【转载】

上次写了一个用文件流方式将Datatable导出Excel的方法,这个方法有局限性,比如没法对Excel进行一些增加列颜色等简单的操作,现在,给大家介绍另外一种方法,用微软的Excel类.既然要用到类,那必须是你的机子要装上Excel才行呢. public  void DataTabletoExcel(System.Data.DataTable[] tmpDataTable,string date1,string date2) { string saveFileName = ""; S

将IList、DataTable数据导出到Excel

/// <summary> /// IList导出Excel /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list">集合</param> /// <param name="dataColumn">字段</param> /// <param name=&

C# 获取DataTable数据导出到Excel

1 protected void ExportExcel(System.Data.DataTable dt) 2 { 3 if (dt == null || dt.Rows.Count == 0) return; 4 Microsoft.Office.Interop.Excel.Application xlsxApp = new Application(); 5 if (xlsxApp == null) return; 6 //System.Globalization.CultureInfo C

利用aspose.cell把数据导出到excel

/// <summary> /// 导出数据到本地 /// </summary> /// <param name="dt">要导出的数据</param> /// <param name="tableName">表格标题</param> /// <param name="path">保存路径</param> public void OutFileToDi

c# 将Datatable数据导出到Excel表格中

public FileResult GetExcelFile()        {            if (Session["beginDate"] != null)            {                string bdate = Session["beginDate"].ToString();                DateTime ld = Convert.ToDateTime(Session["lastDate&q

C#大量数据导出到Excel

工作过程中经常会用到将数据导出到Excel中,一般情况下需要导出的数据都是几百几千条或者上万条,这都没有什么问题,但有时候会遇到特殊的需求,客户要求把几十万条甚至上百万条的数据导出到Excel中,这就比较麻烦了.当数据量很大导出到Excel表格的时候通常会遇到两个问题:一个是内存溢出,由于需要处理的数据量比较大,导致Excel占用的内存过多从而导致数据还没有导出完就因为内存溢出而失败:另一个是每张Excel表单最多只能有65536行,所以当DataTable或DataSet中数据多于65536行

Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域

上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处. VSTO最大的优势是,这双向的过程中,全程有用户的交互操作. 而一般IT型的程序,都是脱离用户的操作,只能让用户准备好数据,离开Excel,或生成数据,要重新打开某文件才能获取到数据结果. 在VSTO中,用户随时在Excel最强UI前端中生产数据,同时也在获得数据结果后,无缝地利用Excel强大的数据处理能力进行数据的再次加工如Vlookup一些其他信息进来,做个图表展示等等. VSTO程序在用户全程数