Excel导入自动化

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

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

我也浏览了一下Excel数据读取器 ,但它似乎不能用于xlsx或Office 2010文档,抱怨“错误的文件签名”

你有什么build议?

Excel数据读取器应该没问题。 你用过:

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

打开你的xlsx文件?

我使用Microsoft.Office.Interop.Excelparsingexcel文件。 通常情况下,部署到的计算机需要安装Office,这会将Interop库置于全局程序集caching中。 我通过在部署项目中复制DLL来解决这个问题。 您也可以尝试将互操作库embedded到程序集中。

以下是使用interop的示例: http : //support.microsoft.com/kb/302084

如果你只是在读取数据,并知道你想要什么,我通常只使用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. } } } } 

不同的例子可以在这里find。

你有机会尝试: http : //spread.grapecity.com/spread-services/或https://www.nuget.org/packages/Spread.Services/ ? 它为您提供了一个全面的API来操作Microsoft Excel兼容的电子表格,而无需在目标机器上安装MS Office。