0

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

我一直在研究 Microsoft 的解决方案Excel 12.0 Object Library,但它似乎依赖于在生产环境中安装的 Office?或者是否可以将应用程序部署到未安装 Office 的环境中?

我还看了一眼Excel Data Reader,但它似乎不适用于xlsx或 Office 2010 文档,抱怨'bad file signature'

你有什么建议?

4

4 回答 4

1

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

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

打开你的 xlsx 文件?

于 2011-11-21T14:02:36.700 回答
1

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

这是一个使用互操作的示例:http: //support.microsoft.com/kb/302084

于 2011-11-21T14:02:59.100 回答
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.
            }
        }
    }
}

可以在此处找到一个不同的示例。

于 2011-11-21T14:04:03.890 回答
0

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

于 2017-09-08T17:05:30.590 回答