导出Gridview到Excel成功但文件损坏?

我需要以编程方式创建一个包含3个工作表的Excel电子表格。

对于Sheet1,我试图导出一个Gridview ...以及它的所有格式......并且不使用Http.Response,因为该技术强制文件“保存/另存为”请求者框弹出,这似乎停止所有进一步的代码执行。

如果我可以直接将我的Gridview写入Excel工作簿,我应该能够继续我的编码例程,然后重新打开文件并以编程方式添加表格2和3。

这段代码的工作原理...有点'...差不多!

private void ExportGridView(GridView myGrid)
{
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

    // Render grid view control.
    myGrid.RenderControl(htw);

    // Write the rendered content to a file.
    string renderedGridView = sw.ToString();

    File.WriteAllText("C:TimeSheetsExportedFile.xlsx", renderedGridView);

}

如果我停止编码...并导航到时间片目录,我会将“ExportedFile.xlsx”显示为“Microsoft Office Excel 2007工作簿”,我的Excel程序没有问题打开并显示格式正确的Gridview。

但是如果我继续使用C#编写代码并尝试在代码隐藏中打开相同的文件,那么我会收到一个'File contains corrupted data'错误。

如果在使用Excel查看“ExportedFile.xlsx”文件时执行“另存为”,则会看到文件名放在引号中,并且文件类型默认为另存为网页htm / html。 如果我通过从文件名中删除引号并将文件类型设置为“.xlsx”来重置这些值,那么可以在我的代码后面读取生成的文件而不会发生夹取。

任何人都可以为我提供解决方案

乔。


我不确定你“试图在我的代码后面打开同一个文件”,但是如果你试图打开它作为一个实际的Excel文件,可能是你的问题。

当你使用HtmlTextWriter将它保存为'excel文件'时,你实际上将它保存为一个excel可以读取的html文件。 尝试将扩展名更改为.html并在浏览器中打开它,然后您会看到我的意思。 这就是为什么excel默认为“另存为网页”,因为这是它被打开的原因。

所以如果你的加载代码把它看作是一个excel文件,那就是为什么你会遇到问题。 您没有发布任何加载代码,因此很难确定。


不能只将gridview转储到xlsx文件中,并期望它能够正常工作。 需要使用OpenXml生成文件或使用外部库的自定义包装,例如http://epplus.codeplex.com/

链接地址: http://www.djcxy.com/p/35751.html

上一篇: Exporting Gridview To Excel Succeeds But File Is Corrupt?

下一篇: How do I add in an save dialogue function in my export to excel codes?