【发布时间】:2012-11-08 12:27:47
【问题描述】:
我必须将一个gridview 导出到excel。我在按钮单击事件函数中使用以下代码:
Response.Clear();
Response.Buffer = true;
Response.AddHeader("Content-Disposition","attachment;filename=sample.xls");
Response.Charset = "";
Response.ContentType = "app`enter code here`lication/vnd.xls";
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(stringWriter);
grdVw.RenderControl(htw);
Response.Write(stringWriter.ToString());
Response.End();
当我运行此程序时,会打开一个对话框,显示下载一个空的 XML 文件。当我尝试调试它时,我发现网格有数据,但它的 stringWriter 没有被填充。我试图将内容类型更改为“application/ms-excel”等,但没有结果。代码中的错误是什么? fot stringWriter 没有被填充的原因可能是什么?
提前致谢
【问题讨论】:
-
创建实例时不应该给字符串编写器一个值吗?正如
StringWriter stringWriter = new StringWriter(myTextToExport);现在发生的那样,stringWriter 没有被填充,因为我认为没有分配给它。但也许我错了,我个人没有导出到 excel 的经验。 -
您正在为响应呈现一个网格,并将网格的 html 作为 Excel 文件发送给用户!这绝对不是你的本意!您应该使用 excel 库,创建一个 excel 文件,用所需的数据填充它,然后将其作为响应发送。
-
@MD.Unicorn : 我们不能直接将网格中的数据导出到 excel 中吗?
-
根据蒂姆提到的文章,您的代码应该可以工作(使用蒂姆在他的回答中说的附加代码)。看来 GridView 的 html 内容是一个有效的 Excel 文件。但我从不使用这种方法。如果是我,我会使用 Excel 生成库(例如CSharpJExcel)来生成 excel 文件。
-
请看link