【问题标题】:Excel import automationExcel导入自动化
【发布时间】:2011-11-21 13:52:37
【问题描述】:

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

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

我也看过Excel Data Reader,但它似乎不适用于xlsx 或Office 2010 文档,抱怨“文件签名错误”。

你有什么建议?

【问题讨论】:

  • 手动还是编程?一次还是反复?最简单的方法是保存文件,然后在 Mgmt Studio 中右键单击数据库根目录并选择 Tasks->Import Data...

标签: c# .net excel import-from-excel


【解决方案1】:

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

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

打开您的 xlsx 文件?

【讨论】:

  • 我做了,但我使用的 Excel 文件显然已损坏!谢谢你让我再试一次!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    如果您只是读取数据并且知道您想要从中得到什么,我通常只是使用 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

    【讨论】:

    • 感谢您的回答!这种方法的问题是我可能不得不在执行导入过程时将文件临时存储到服务器上?该文件作为输入流接收。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 2011-01-18
      相关资源
      最近更新 更多