我需要以编程方式创建一个包含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:\\TimeSheets\\ExportedFile.xlsx", renderedGridView);
}
如果我停止编码...并导航到TimeSheets目录,我看到“ExportedFile.xlsx”显示为“Microsoft Office Excel 2007工作簿”,我的Excel程序打开并显示格式正确的Gridview没有问题 .
但是,如果我继续在C#中编码并尝试在我的代码隐藏中打开同一个文件,我会收到一个“文件包含损坏的数据”错误 .
如果,在使用Excel查看“ExportedFile.xlsx”文件时,我执行“另存为”,我看到文件名放在引号中,文件类型默认为另存为网页htm / html . 如果我通过从文件名中删除引号并将文件类型设置为“.xlsx”来重置这些值...那么,这个结果文件可以在我的代码隐藏中读取而不会紧张 .
谁能为我提供解决方案?
乔 .