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

时间:2010-10-18 20:00:40

标签: asp.net vb.net excel export-to-excel

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

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

这些都是我能想到的所有功能,在其他图书馆看到的任何帮助或建议都将受到赞赏。我们在服务器上运行Excel 2007,但我们正在向客户推出Office 2010,所以我认为这可能为一些更受支持的文件格式打开了大门,如果这有帮助的话。

5 个答案:

答案 0 :(得分:1)

我建议您使用 DevExpress 中的 DevExpress.XtraReports 。它是一个许可产品,但为您提供了一个友好的工具包,用于生成出色且复杂的报告。它有详细记录且易于使用,一旦定义了模板(REPX),您可以通过为每个元素分配值以及使用 [邮件合并] 功能来自动填充数据。一旦与数据绑定报告就替换。在这种技术的核心是一个良好的OO设计类。生成报告后,您可以将其导出为最常见的格式: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   用法。该库主要用于创建PDF文档,但有些   版本还支持创建XLS文档。

答案 1 :(得分:1)

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

感谢所有建议。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

查看ExcelLibrary

在对此进行搜索时,我发现this page (on StackOverflow)提供了一些示例代码。

答案 4 :(得分:0)

Office Web Components(虽然已过时)是免费的,过去曾为我效劳过。

如果你想花掉战利品,Aspose Cells也是一个很好的方式。