代码之家  ›  专栏  ›  技术社区  ›  jamesaharvey

用于在Excel和PDF中生成报告的经济高效的.NET解决方案[已关闭]

  •  0
  • jamesaharvey  · 技术社区  · 14 年前

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

    编辑: 本质上,我将拥有的只是一些基本的HTML报表中的数据与一些计算/摘要数据,但没有什么花哨的图形等。然后,我需要能够导出这些HTML报表到Excel和/或PDF。

    6 回复  |  直到 14 年前
        1
  •  2
  •   Charles Bretana    14 年前

    也签出 Active Reports.Net from Data Dynamics . 它的成本比SQL Server Reporting Services略高,但更易于使用,可以直接集成到Visual Studio中,并且输出的IL代码在现有程序集中更多,或者是成为解决方案一部分的另一个托管代码IL程序集…当然,这是自由分配和免版税。

        2
  •  5
  •   jrummell    14 年前

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

    编辑:我应该补充一点,如果你以前从未使用过像Crystal这样的报告工具,那就有一点学习曲线。

        3
  •  2
  •   Stephen Wrighton    14 年前

    如果这是WinForms或WPF应用程序(即不是ASP.NET),则可以从.NET中的本机报告控件获取该功能。WinForms报表控制导出到Excel和PDF,尽管Excel导出与…功能正如人们所期望的。请注意,在不使用完整的SQL Server Reporting Services的情况下,我不确定ASP.NET上有多少此功能可用。

    也就是说,随着Office2007和基于XML的格式(在Office2003中也可以使用)的广泛采用,生成Excel文档并不难,尽管学习所需的XML文件可能会很费时。好消息是,这可以同时用于WinForms/WPF和ASP.NET应用程序。

    现在,要从ASP.NET应用程序中获取PDF,您有许多选项,其中包括手动生成(PDF是开放标准)或使用库,例如 iText.Net .就我个人而言,我一直对IText.net及其兄弟库持谨慎态度,因为我的经验表明它们是某种资源消耗工具。

        4
  •  1
  •   Joel Provost    14 年前

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

    我们提供一个扩展名为.xls的HTML文档,Excel将其读取。

        5
  •  1
  •   Community Egal    7 年前

    我在Excel报表中使用的几个开源选项:

    如果XLSX是必须的: ExcelPackage 这是一个很好的开始,但当开发人员停止使用它时,它就消失了。exml从中得到并添加了一些特性。 ExML 这不是一个糟糕的选择,我还在一些生产网站上使用它。

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

    另外,看看其他答案 this question .

        6
  •  0
  •   Chris Cudmore    14 年前

    如果您不需要传输公式,只需要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);
    }
    

    这将在Excel中作为cvs打开。

    YMMV,这是一个Q&D黑客。