【问题标题】:Exporting a gridview to excel in c#在C#中将gridview导出到excel
【发布时间】: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

标签: c# excel gridview export


【解决方案1】:

我假设grdVw.RenderControl(htw); 引发了一个异常,即 GridView 未以服务器形式呈现。

尝试在调试器中执行它,我很确定您会看到该异常。

你可以通过覆盖VerifyRenderingInServerForm来避免这个异常

public override void VerifyRenderingInServerForm(Control control)
{
    // Confirms that an HtmlForm control is rendered for the specified ASP.NET 
    // server control at run time.  
}

请参阅 herehere

【讨论】:

  • 有问题的代码是用 C# 编写的,你应该用 C# 语言回答这个问题。
  • 请看link
  • @TimSchmelter :我已经在它的调试器中运行了。问题是 stringWriter 没有被填充。
猜你喜欢
  • 2013-09-25
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
相关资源
最近更新 更多