上篇博客,讲述初步导出Excel出现的问题。现在具体写一下导出Excel步骤。
   对于大批量的数据,导出Excel的办法如下。
   
 (1)使用DataTable导出Excel
     其中使用StringWriter类:将信息写入字符串。其命名空间为:System.IO

具体的原理是:
      首先读取DataTable中的列名,然后循环读取DataTable行值。
      然后设置导出的编码,导出的类型。
      最后输出StringWriter对象即可。
      这种导出是将文件直接以文件流的形式输出到浏览器。

[csharp] view plaincopy print?
  1. private  StringWriter GetStringWriter(DataTable dt)
  2. {
  3. StringWriter sw = new StringWriter();
  4. //读列名
  5. foreach (DataColumn dc in dt.Columns)
  6. sw.Write(dc.ColumnName + "\t");
  7. //读列值
  8. //重新的一行
  9. sw.Write(sw.NewLine);
  10. if (dt != null)
  11. {
  12. foreach (DataRow dr in dt.Rows)
  13. {
  14. for (int i = 0; i < dt.Columns.Count; i++)
  15. {
  16. sw.Write(dr[i].ToString() + "\t");
  17. }
  18. sw.Write(sw.NewLine);
  19. }
  20. }
  21. sw.Close();
  22. return sw;
  23. }
[csharp] view plaincopy print?
  1. protected void ExcelImport(DataTable dt, string ExportFileName)
  2. {
  3. StringWriter sw = GetStringWriter(dt);
  4. //当前编码
  5. HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
  6. //把输出的文件名进行编码
  7. string fileName = HttpUtility.UrlEncode (ExportFileName, System.Text.Encoding.UTF8);
  8. //文件名
  9. string str = "attachment;filename=" + fileName + ".xls";
  10. //把文件头输出,此文件头激活文件下载框
  11. HttpContext.Current.Response.AppendHeader("Content-Disposition", str);//http报头文件
  12. HttpContext.Current.Response.ContentType = "application/ms-excel";
  13. this.Page.EnableViewState = false;
  14. Response.Write(sw);
  15. Response.End();
  16. }
[csharp] view plaincopy print?
  1. protected void Button1_Click(object sender, EventArgs e)
  2. {
  3. DataTable dt = new SelectCourseManager().SelectByCollegeAndProperty(ddlCourseProperty.Text, ddlCollege.SelectedValue);
  4. if (dt.Rows.Count == 0)
  5. Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascriopt' defer>alert('没有数据,不需要导出哈');</script>");
  6. else
  7. {
  8. //导出Excel
  9. ExcelImport(dt, "课程");
  10. }
  11. }

在导出Excel的时候,最关键的是编码问题,不同的形式导出Excel编码形式不同,否则,导出的Excel文件中文显示乱码。在DataTable导出Excel的时候,当前输出的编码样式是简体中文GB2312

HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

而其导出的文件名是:UTF8编码

string fileName = HttpUtility.UrlEncode (ExportFileName, System.Text.Encoding.UTF8);

转载于:https://www.cnblogs.com/nzgbk/p/6112470.html

Asp.net导出Excel相关推荐

  1. asp.net导出excel示例代码

    asp.net导出excel示例代码 asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary>     ...

  2. 【译】Asp.Net 导出 Excel 数据的9种方案

    简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website table 等多钟格式的文档.它具备自动识别行号,字符,格式化数字等功能,例如: ...

  3. 关于ASP.NET导出Excel表格的个人总结归纳

    2019独角兽企业重金招聘Python工程师标准>>> 之前一直想研究ASP.NET导出Excel表格来着,但一直没有时间,这几天因为一个项目的需要,所以就钻研了一下.有百度,但网上 ...

  4. ASP.Net导出EXCEL表(小结)

    这个问题困扰了我好几天,现在终于解决了,现公布整个过程的注意点.通过.net导出Excel表,除了注意导出的方法外,还要关心资源的回收问题,中间涉及到COM组件的关闭等. 因为对windows系统.. ...

  5. ASP.NET 导出EXCEL

    采用.Net Excel组件导出 EXCEL文件, /// <summary>         /// 导出Excel         /// </summary>       ...

  6. 一个ASP.NE导出Excel类

    支持DataSet.DataReader.DataTable.DataGrid等数据源 看起来有点耍赖,用HTML构造的,但是能用就行   1using System;   2using System ...

  7. Asp.net导出Excel报表(解决无网格问题)

    随着单位活动的增多,各大4S店要求查看活动报名的要求的出现,导出Excel或者是Word文档功能显得尤为重要.可以大量节省编辑的工作时间和工作强度.         今天花了点时间编写了各大报名品牌的 ...

  8. asp.net 导出excel带图片

    protected void btgua_Click(object sender, EventArgs e) { DataTable dt = ds.Tables[0]; if (dt != null ...

  9. asp.net导出Excel类库

    using System; using System.Collections.Generic; using System.Reflection; using System.Web; using Exc ...

最新文章

  1. Open3D面向机器学习的扩展库
  2. 【OpenCV】cv::Mat和std::vector之间的相互转换
  3. html设置excel打开新窗口,怎么在excel的大页面上设置第几页第几页的
  4. SAP OData服务的catalog service
  5. Ajax — 新闻列表
  6. k8s往secret里导入证书_K8S之Secret
  7. 高可用的 MFS 文件分布式系统(Drdb+heartbeat+MFS )
  8. Qt工作笔记-进程间的通信(通过QSharedMemory)
  9. SDN时代更需要有保障的网络
  10. windows 问题排查
  11. csdn账号密码泄露了吗
  12. Tomcat日志分割
  13. 微信小程序mpvue框架
  14. Sougou微信文章获取
  15. OpenGL——顶点属性
  16. 正弦余弦定理,求圆弧度或度数
  17. linux安装frps服务,ubuntu搭建frps服务
  18. 关于neo4j图数据库导出的svg文件打开方式
  19. Python+Vue计算机毕业设计BeatHouse伴奏交易平台z19pu(源码+程序+LW+部署)
  20. 苹果手机html吊起拍照,苹果手机照相技巧

热门文章

  1. 从 AlphaGo 到具有人类智慧的 AI 究竟有多远?François Chollet 有了一些新想法
  2. 俄罗斯“木船”机器人系统将于2020年部署部队
  3. 华为发布面向2025十大趋势
  4. UC伯克利新机器人成果:灵活自由地使用工具
  5. 12年后,人工智能和人类会是什么样?这是900位专家的看法|报告
  6. “强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识
  7. 为什么说特斯拉研发自动驾驶AI芯片应该引起注意?
  8. 在这场人工智能“战争”中,这些国家都在做些什么?
  9. 你的编程技能是否与时俱进? TIOBE 4 月榜单出炉
  10. 23 年码农经历,33 次创业失败,38 岁身价百亿,快手创始人宿华的逆袭史!