使用ASP.NET生成Excel文档网站
我有一个ASP.NET应用程序,它可以帮助用户创建一个带有特定数据的Gridview。一旦生成此表我希望用户按下一个按钮,并能够保存表为Excel document.There两种不同的方法,我知道的:使用ASP.NET生成Excel文档网站
使用的HtmlTextWriter与ContentType的“应用程序/越南盾。 ms-excel“将该文件作为HttpResponse发送。我使用GridView1.RenderControl(htmlTextWriter)来呈现gridview。这几乎可以工作,但当文件打开时,excel文件总是显示警告,因为内容与扩展名不匹配。我尝试了各种内容类型无济于事。这是有道理的,因为我正在使用HtmlWriter。这似乎也不是一个好习惯。
我试过的第二件事是使用Office自动生成Excel文件。但是对于要生成的文件,我需要将其保存到磁盘然后再次读取。从我读过的内容来看,这是唯一的办法,因为Excel对象一旦保存就只会变成真正的Excel文件。我发现Excel类中的.saveas方法会因写入权限而引发异常,即使我试图保存在App_Data文件夹中。所以,我做了一些研究,发现显然办公自动化是鼓励使用Web服务:https://support.microsoft.com/en-us/kb/257757
微软目前并不提倡,不支持, 自动化的Microsoft Office应用程序从任何无人值守, 非交互式客户端应用程序或组件(包括ASP, ASP.NET,DCOM和NT服务),因为Office在此环境中运行Office时可能会出现不稳定的 行为和/或死锁。
肯定必须有一种保存方式让网站生成一个Excel文件并提供给用户!我无法想象这个问题没有得到解决,也没有人关心这个问题,但我找不到任何好的解决方案。
创建一个Excel文件的最简单的(和最好)的方法是使用epplus
Epplus sample for webapplication
using (ExcelPackage pck = new ExcelPackage())
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");
//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(tbl, true);
//Format the header for column 1-3
using (ExcelRange rng = ws.Cells["A1:C1"])
{
rng.Style.Font.Bold = true;
rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); //Set color to dark blue
rng.Style.Font.Color.SetColor(Color.White);
}
//Example how to Format Column 1 as numeric
using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1])
{
col.Style.Numberformat.Format = "#,##0.00";
col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
}
//Write it back to the client
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=ExcelDemo.xlsx");
Response.BinaryWrite(pck.GetAsByteArray());
}
这看起来像一个有用的工具,但我扶正为我公司与该Web应用程序我认为GNU许可证不会解决问题。从这里和其他线索我缺乏答案我GOOGLE了,我觉得没有第三方工具没有好办法!?那真的是这样吗? – user2696330
epplus是最好的办法,如果你想要一个产品,那么我可以推荐软工匠excel /办公室作家,但它是相当昂贵的 – Thorarins
没有第三方,是的好epplus是用c#和.net编写的,所以看看在源代码中,做同样的事情你自己... – Thorarins