2009-12-23 79 views
0

我正在寻找一些经济高效的解决方案和/或开源选项来生成Excel和PDF格式的报表。我认识到一些开源选项在功能和灵活性方面可能比COTS版本的所有功能和哨声都要少,但是有没有哪些选项落在其间?用Excel和PDF生成报表的经济高效的.Net解决方案

编辑: 本质上,我将只是一些基本的HTML数据报表中的一些计算/汇总数据,但没有像图形等花式我会需要能够导出这些HTML报告Excel和/或PDF。

+1

你能更深入地描述你的需求吗?不知道你在找什么,很难做出推荐。 – 2009-12-23 14:42:50

+0

“成本效益”是什么意思?花费你很多时间还是不花很多钱?你的时间多少钱? – 2009-12-23 14:52:16

+0

价格便宜。客户只能说服花费高达500美元。 – jamesaharvey 2009-12-23 15:03:29

回答

2

也检出Active Reports.Net from Data Dynamics。它比SQL Server Reporting Services的成本稍高一点,但它更易于使用,直接集成到Visual Studio中,输出只是现有程序集中的更多IL代码,或者成为您解决方案一部分的另一个托管代码IL程序集。 ..这当然是免费分发和免版税的。

+0

在我问这个问题之前,这是我最可能考虑的因素。感谢加强;-) – jamesaharvey 2009-12-23 15:19:25

1

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

我们提供与.xls扩展HTML文档和Excel中读取它。

5

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

编辑:我应该补充说,如果你以前从未使用过Crystal等报表工具,那么学习曲线就有点儿了。

2

如果这是WINFORMS或WPF应用程序(即不是ASP.NET),那么您可以从.NET内部的REPORTING控件获得该功能。 Winforms REPORT控件导出为EXCEL和PDF,但EXCEL导出并不完全如预期的那样功能正常。请注意,我不确定在不使用完整的SQL SERVER Reporting Services的情况下,ASP.NET上有多少功能可用。

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

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

+0

HTML表格 - >可能不是Winforms或WPF? – Nate 2009-12-23 14:57:44

+0

我在编辑之前就开始了回复,所以我没有看到关于HTML的那一点。这就是说,情况并非一定如此。使用浏览器控件时,使用HTML是向用户显示格式化数据的快捷方式。可能不是“最佳实践”,但它很容易和快捷,有时这更重要。 – 2009-12-23 15:01:54

1

我已经使用了Excel报表的几个开源选择:

如果XLSX是必须的:ExcelPackage是一个良好的开端,但离开了人世,当开发商退出它的工作。 ExML从那里拿起并添加了一些功能。 ExML不是一个坏的选择,我仍然在几个制作网站中使用它。

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

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

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

这将作为CVS在Excel中打开。

YMMV,它是一个q & d黑客。