2011-11-21 44 views
0

我已经完全停顿了:我需要将数据从Excel导入Microsoft SQL Server 2008数据库。从特定行开始的某些列包含我需要提取并正确插入到数据库中的数据信息,并且该文件本身作为流提供。Excel导入自动化

我一直在寻找微软的解决方案Excel 12.0对象库,但它似乎依赖于正在安装在生产环境中的Office?或者是否可以将应用程序部署到未安装Office的环境?

我也取决于Excel Data Reader瞟,但它似乎并不功能XLSX或Office 2010的文档,抱怨一个“坏文件签名”

您有哪些建议?

+1

手动还是编程?有一次或重复?最简单的方法是保存文件,然后在Mgmt Studio中右键单击数据库根目录并选择任务 - >导入数据... – Widor

+0

以编程方式。 – Leonard

回答

1

Excel Data Reader应该没问题。你用过:

//2. Reading from a OpenXml Excel file (2007 format; *.xlsx) 
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 

打开您的XLSX文件?

+0

我做过了,但我使用的Excel文件显然已损坏!谢谢你让我再试一次! – Leonard

1

我使用Microsoft.Office.Interop.Excel来解析excel文件。通常,部署到的计算机需要安装Office,这会将Interop库置于全局程序集缓存中。我通过使用部署项目复制DLL来解决这个问题。您也可以尝试将interop库嵌入到您的程序集中。

下面是一个使用互操作的一个例子:http://support.microsoft.com/kb/302084

1

如果你只是在数据读取,你想出来的就是它的名气,我通常只是用OLEDB数据读取,然后做什么,我需要与此。使用的DbDataReader快速办理行

快速样品,给人一种ConnectionString和SHEETNAME

using System.Data.Common; 
using System.Data.OleDb; 

using (OleDbConnection connection = new OleDbConnection(ConnectionString)) 
{ 
    connection.ConnectionString = ConnectionString; 
    connection.Open(); 
    using (DbCommand command = connection.CreateCommand()) 
    { 
     command.CommandText = "SELECT * FROM [" + SheetName + "]"; 
     using (DbDataReader DR = command.ExecuteReader()) 
     { 
      while (DR.Read()) 
      { 
      // Read your data here. 
      } 
     } 
    } 
} 

不同的example可以在这里找到。

+1

谢谢你的回答!这种方法的问题在于,我可能不得不在执行导入过程时临时将文件存储到服务器?该文件作为输入流接收。 – Leonard