用于Excel和PDF生成报告的经济高效的.Net解决方案

我正在寻找一些经济高效的解决方案和/或开源选项,用于生成Excel和PDF格式的报告。 我意识到一些开源选项在function和灵活性方面可能比具有所有铃声和口哨的COTS版本更少,但有没有任何选项介于两者之间?

编辑:基本上我所拥有的只是一些基本的HTML报告,包含一些计算/摘要数据的表格中的数据,但没有像图表那样花哨等等。然后,我需要能够将这些HTML报告导出到Excel和/或PDF 。

另请参阅Data Dynamics的Active Reports.Net 。 它比SQL Server Reporting Services花费更多,但它更容易使用,直接集成到Visual Studio中,输出只是现有程序集中的更多IL代码,或者是成为解决方案一部分的其他托管代码IL程序集。 ..当然可以免费分发和免版税。

如果您已经有SQL Server,那么您就拥有了SQL Server Reporting Services 。 它不需要任何额外的许可。 它可以导出为PDF,Excel等。

编辑:我应该补充一点,如果您之前从未使用Crystal等报表工具,那么会有一些学习曲线。

如果这是一个WINFORMS或WPF应用程序(即非ASP.NET),那么您可以从.NET中的本机REPORTING控件获取该function。 winforms REPORT控件导出到EXCEL和PDF,尽管EXCEL导出并不像人们期望的那样……function。 请注意,如果不使用完整的SQL SERVER Reporting Services,我不确定ASP.NET中有多少此function可用。

也就是说,随着Office 2007和基于XML的格式(在Office 2003中也可用)的大规模采用,生成EXCEL文档并不难,尽管学习所需的XML文件可能非常耗时。 好消息是,这可以为winforms / WPF和ASP.NET应用程序完成。

现在要从ASP.NET应用程序获取PDF,然后您有许多选项,其中包括手动生成(PDF是开放标准)或使用iText.Net等库。 就个人而言,我总是对iText.Net及其兄弟图书馆保持警惕,因为我的经验表明它们是资源匮乏的东西。

在我们的场景中,我们使用iTextSharp进行PDF生成,并依赖于Excel能够读取HTML格式的表以生成电子表格。

我们提供带有.xls扩展名的HTML文档,Excel将其读入。

我用于Excel Reports的一些开源选项:

如果XLSX是必须的: ExcelPackage是一个良好的开端,但在开发人员退出工作时就已经死了。 ExML从那里获得并添加了一些function。 ExML不是一个糟糕的选择,我仍然在几个生产网站中使用它。

但是,对于我的所有新项目,我使用的是NPOI , Apache POI的.NET端口。 它还没有XLSX支持,但它是唯一一个正在积极开发的。 它也是3种选择中最快的。

另外,请看一下这个问题的其他答案。

如果您不需要传输公式,只需要在Excel中传输数据,那么快速而肮脏的Web解决方案就是:

ASPX页面:

<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="Download.aspx.cs" Inherits="Myapp.Download" %> 

代码背后:

 protected void Page_Load( object sender, EventArgs e ) { Response.Clear(); Response.ClearHeaders(); Response.ContentType = "application/vnd.ms-excel"; Response.ContentEncoding = System.Text.Encoding.Unicode; String shippingFileName = "SomeFile" + DateTime.Now.ToString( "yyyyMMdd" ) + ".csv"; Response.AddHeader( "Content-Disposition", "attachment; filename=" + shippingFileName ); String data = // Create a string that follows the CVS format (use quotes when necessary) Response.Write(data); } 

这将作为CVS在excel中打开。

YMMV,这是一个q&d hack。