替代Excel作为ASP.Net报告生成器

我使用excel通过vb.net/asp.net从网页生成报告,然后将文件发送给用户。 我们有一些Excel超慢/低效率/不closures的问题(即使我们跟踪进程ID,并尝试在代码中杀死它…)。 所以我正在寻找一些灵活的select。 我们需要一个replace,可以:

  • 允许inidivdual单元格格式包括边框(每边不同的设置),背景颜色,字体样式/着色等…
  • 允许单元格合并
  • 允许在单元格内部分格式化(在这种情况下为粗体),同时保持文本的其余部分不变
  • 图像插入/重新放置在一个单元格内(不重要)
  • 每个工作簿多个工作表

这些都是我能想到的所有function,任何帮助或build议在替代图书馆看,将不胜感激。 我们正在服务器上运行Excel 2007,但是我们将Office 2010推广到客户端,所以我认为这可能会打开一些更受支持的文件格式,如果有帮助的话。

在Windows上运行GNU阴谋有一点点痛苦,但它是一个很棒的工具

这听起来像您正在使用打开Excel的库,并使用MS Office Excel对象来创buildExcel文件。 由于您使用的是2007及更高版本,因此您可能需要考虑使用创buildXML的库(因此,Excel根本无法打开)手动创buildExcel文件。

检查ExcelLibrary 。

在search的时候,我发现这个页面(在StackOverflow上)提供了一些示例代码。

Office Web组件 (虽然过时)是免费的,并在过去为我工作。

如果你想要消耗战利品, Aspose Cells也是一个不错的select。

在查看各种选项并进行更独立的研究之后,我最终使用了EPPlus,您可以从http://epplus.codeplex.com获取EPPlus。

感谢所有的build议。

我build议你使用DevExpressDevExpress.XtraReports 。 这是一个许可的产品,但为您提供一个友好的工具包,以生成伟大的和复杂的报告。 它是有据可查的和易于使用的,一旦你定义了一个模板(REPX),你可以通过为每个元素分配一个值来填充数据以及使用[邮件合并]function,一旦你绑定数据报告。 这种技术的核心是一个很好的面向对象devise的类。 一旦生成报告,您可以将其导出为最常见的格式:XLS,HTML,PDF,RTF …

public void GenerateReportFile(string rptFileName, string param1, int param2) { XtraReport report = null; try { report = new XtraReport(); //-- loads the layout template (repx file) report.LoadLayout("SomeDirectory\report_template.repx"); //-- assign data to report controls report.FindControl("Label1", true).Text = string.Format("{0:dd/MM/yyyy}", fecha1); report.FindControl("Label2", true).Text = string.Format("{0:dd/MM/yyyy}", fecha1); //-- gets data from some Data Acces Layer method and assig it to the report DataSource property DALReport dal = new DALReport(); report.DataSource = dal.GetReport1Data(ExpEmp, param1, param2); report.DataMember = "data"; report.ExportToPdf(rptFileName, options); } catch { throw; } finally { if (report != null) { report.Dispose(); } report = null; } } 

有关更多信息,请参阅: http : //demos.devexpress.com/XtraReportsDemos/

.Net iTextSharp还有另一个免费的库,这个库最初是为Java编写的,然后被转换为C#for .Net的用法。 该库主要用于创buildPDF文档,但某些版本还支持创buildXLS文档。