【发布时间】:2011-01-23 11:44:08
【问题描述】:
我有一个要导出到 Excel 的 GridView。当我使用我在网上找到的示例代码时,它可以很好地将内容导出到 Excel,但由于某种原因,它也会清除导出表之外的所有网格线。
对于您的普通 excel 用户来说,这很容易解决,但我需要这个解决方案来为每个人工作。
那么有没有办法将 GridView 中的数据导出到 Excel 工作簿中,这样看起来就像是刚刚输入到 Excel 中一样?我在下面粘贴了我正在使用的代码,假设存在一个名为 toPrint 的 GridView 并且具有准确的数据。
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=" + name + "_Registration_Forms.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
Page.EnableViewState = false;
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
toPrint.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
编辑:找到一个部分解决方案。如果我导出为以逗号分隔的列表并将标题设置为 CSV 文件,它会正常打开并显示所有网格线(即使是导出数据之外的网格线)。当然,唯一的问题是在导出它们之前必须从我的值中删除每个逗号和换行符。
【问题讨论】:
-
上述方法输出一个 HTML 格式的表格,Excel 出色地完成了该表格的解析和几乎完全相同的复制显示。我不确定是否有解决方案,但如果格式不是那么重要,CSV 输出可能是一个不错的选择。
-
对于那些可能感兴趣的人,o.k.w 的评论是我的方式。这并不完美,因为现在我必须从要导出的内容中去掉逗号,但最终用户更喜欢这种方法。
-
您可以尝试使用制表符而不是逗号来分隔值
标签: .net asp.net excel gridview export