我之前已经多次询问过这个问题,但万一我可能已经逃脱了一些眼睛,我再次陈述问题
我们的ASP.Net网络应用程序显示一些呈现为屏幕html表的报告,我们还具有导出功能。它是标准代码
Table a = new Table();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.xls"));
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridName.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
到目前为止一切顺利。问题是,当导出到excel时它实际上被保存为html,所以当Excel打开文件时,它会出现警告说格式不正确。在警告文件打开后,这不是什么大问题。
但是对于IE11,有时这些文件拒绝打开说格式不正确。随着IE11将向越来越多的用户推出,我们将不得不解决这个问题。我有的选择是
我确实试图找出,但无法找到任何可以将内容保存为实际xls数据而非html的内容。我确信这是一个非常普遍的问题,所以如果有人对此有任何解决方案或建议。
如果没有任何效果,我将不得不使用选项2,考虑到格式和样式,这是更多的工作。
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用Aspose.Cells将HTML表格导入Excel。将导入HTML表格中的数据,但是,您需要处理表格格式。
//table.txt contains HTML table
string contents = File.ReadAllText(@"C:\data\table.txt");
using (var stream = new MemoryStream(Encoding.ASCII.GetBytes(contents)))
{
var loadOptions = new LoadOptions(LoadFormat.Html)
{
ConvertNumericData = false
};
//Load the HTML, this will import all the HTML table data to Excel file
var workbook = new Workbook(stream, loadOptions);
//Adding a new List Object to the worksheet, after this you can format the table
Aspose.Cells.Tables.ListObject listObject = workbook.Worksheets[0].ListObjects[workbook.Worksheets[0].ListObjects.Add("A3", "E23", true)];
//Adding predefined Style to the table
listObject.TableStyleType = Aspose.Cells.Tables.TableStyleType.TableStyleMedium10;
//Save using Response
workbook.Save(this.Response, "Customer.xls", ContentDisposition.Inline, new XlsSaveOptions());
}
希望这有帮助。