【问题标题】:Excel reporting with asp.net使用 asp.net 进行 Excel 报告
【发布时间】:2011-08-17 19:24:10
【问题描述】:

我有 Excel(.xlsx) 文件(模板),我需要从 SQL Server 数据库中填写 Excel 某些部分的数据。有可能吗?如果不可能,实现它的最佳方法是什么?我也在考虑 SQL 服务器报告服务。请告诉我。

感谢您的任何建议。

【问题讨论】:

    标签: c# asp.net reporting


    【解决方案1】:

    有很多方法可以做到这一点,这实际上取决于您更喜欢做什么以及您希望如何将解决方案集成到最终解决方案中。

    以下是我使用的一些方法,可以让您了解可以做什么......

    报告服务

    该控件很容易集成到现有的 ASP.NET 解决方案中,安全性基于 Windows 身份验证,因此安全性在 SQL Server/Active Directory 中进行管理。通常在我的小应用程序中,我使用模拟来禁用安全性并设置隐藏的报告参数来控制报告。报表是在 BIDS/VS 中使用 GUI 创建的,感觉很像在 Access 中构建报表。该控件还支持以多种不同格式(PDF、XLS、DOC 等)导出。

    不使用 Excel 编辑 XLS 文件

    过去几年我一直在使用NPOI,它非常棒,可以轻松管理/操作模板等 XLS 文档。这是一个做template in NPOI的例子。

    示例

    // Open Template
    FileStream fs = new FileStream(Server.MapPath(@"\template\Template_EventBudget.xls"), FileMode.Open, FileAccess.Read);
    
    // Load the template into a NPOI workbook
    HSSFWorkbook templateWorkbook = new HSSFWorkbook(fs, true);
    
    // Load the sheet you are going to use as a template into NPOI
    HSSFSheet sheet = templateWorkbook.GetSheet("Event Budget");
    
    // Insert data into template
    sheet.GetRow(1).GetCell(1).SetCellValue(EventName.Value);  // Inserting a string value into Excel
    sheet.GetRow(1).GetCell(5).SetCellValue(DateTime.Parse(EventDate.Value));  // Inserting a date value into Excel
    
    sheet.GetRow(5).GetCell(2).SetCellValue(Double.Parse(Roomandhallfees.Value));  
    

    使用 OLE 直接 XLS/XLSX

    直接使用 XLS 和 XLSX 文件的另一种解决方案是使用随 2007 Office System Driver 一起安装的 OleDbConnection。

    示例

     using (
                OleDbConnection con =
                    new OleDbConnection(
                        @"Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties=Excel 12.0;Data Source=" + SourceFile +
                        @";Extended Properties=Excel 12.0;"))
            {
                con.Open();
                string sql = String.Format("SELECT * FROM [{0}$]", sheetName);
                OleDbDataAdapter da = new OleDbDataAdapter(sql, con);
    
                da.Fill(dt);
            }
    

    使用 SSIS 填充 Excel 模板

    这一切都在 SQL Server 中完成,输出可以邮寄或放在文件夹中。如果我需要使用特殊格式/公式/等自动发送每个定义的 Excel 文件,我会使用这种方法...这是在 SSIS 包中使用 BIDS/VS 设置的。您将使用Excel Destination 创建一个数据流。这种方法有一些限制,请使用链接了解详细信息。

    同样,正确的解决方案将基于您的需求...还要考虑维护,因为报告的最终消费者似乎总是需要对报告进行更改/更新!!!

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 如何将网页中的值替换为 Excel?本帖不讨论。
      • 我在答案中添加了一些链接
      【解决方案3】:

      我使用了电子表格工具。它是付费的,但是一个非常好的工具。

      【讨论】:

        猜你喜欢
        • 2010-09-09
        • 1970-01-01
        • 2016-08-14
        • 1970-01-01
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多