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

时间:2009-12-23 14:41:24

标签: c# .net reporting

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

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

6 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

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

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

另外,请查看this question上的其他答案。

答案 5 :(得分:0)

如果你不需要传输公式,只需要在Excel中传输数据,这就是一个快速而又脏的网络解决方案:

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);
}

这将在excel中作为CVS打开。

YMMV,这是一个q&amp; d hack。