当我还在之前的公司时(那时刚毕业,我在之前的公司干了三年)领导让我能够将 GridView 显示出来的数据导出成 Excel 和 TXT 文件。本来这是一个很简单的功能,但是在实现过程中,还是经历了很多波折,期间还发现了一个很有趣的现象——原来微软的 Word 和 Excel 文件可以识别 HTML 标记。
本文内容
- GridView 导出
- 导出分析
- 多 sheet 的 Excel
- 补充
导出
本文旨在说明微软的 Word 和 Excel 文件可以识别 HTML 标记,它们的内部实现也是使用 HTML 标记。因此,只是简单说明一下。
对于导出时,涉及的一些问题,暂不考虑,如:
- 导出的编码,否则,导出的 Excel 文件会乱码;
- 要重构 VerifyRenderingInServerForm 方法,否则,会出现如下错误信息:
- 导出时的文件名应为 ".xls",而不能是 ".xlsx",这样,Word 2003 和 2007 都能打开。
导出 GridView 的数据代码如下:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<!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></title>
<script runat="server">></head><body><form id="form1" runat="server"><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"><Columns><asp:BoundField DataField="EMPNO" HeaderText="员工编号" /><asp:BoundField DataField="ENAME" HeaderText="员工姓名" /><asp:BoundField DataField="JOB" HeaderText="职位" /><asp:BoundField DataField="MGR" HeaderText="上级编号" /><asp:BoundField DataField="HIREDATE" HeaderText="出生日期" /><asp:BoundField DataField="SAL" HeaderText="工资" /><asp:BoundField DataField="DEPTNO" HeaderText="部门" /></Columns></asp:GridView><asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="导出" /></form></body></html>