2011-08-17 69 views
0

我有Excel(.xlsx)文件(模板),我需要从SQL服务器数据库的Excel的某些部分填充数据。它是否可以兼容?如果它不是posibble实现它的最好方法是什么?我也在考虑SQL Server Reporting Services。请告诉我。Excel报告与asp.net

感谢您的任何建议。

回答

1

有很多方法可以做到这一点,这真的取决于你更舒适的做以及如何将解决方案整合到最终解决方案中。

这里有一些方法我用,给你什么可以做的想法...

报告服务

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

编辑XLS文件,而Excel中

我一直在使用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)); 

直接XLS/XLSX与OLE

另一种解决方案,以直接与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的数据流。这种方法有一些限制,请使用链接获取详细信息。

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

1

我使用了Spreadsheet齿轮。它是有偿的,但是一个非常好的工具。