Excel导入自动化

本文关键字:自动化 导入 Excel | 更新日期: 2023-09-27 18:15:14

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

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

我也看了一眼Excel数据阅读器,但它似乎不能用于xlsx或Office 2010文档,抱怨一个"坏的文件签名"

你有什么建议?

Excel导入自动化

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

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

打开XLSX文件?

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

下面是一个使用互操作的例子: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.
            }
        }
    }
}

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