【问题标题】:Import Excel Data to Database将 Excel 数据导入数据库
【发布时间】:2011-06-24 21:56:55
【问题描述】:

我刚刚开始一个项目,我的系统(用 .NET MVC 编写)必须从指定文件中读取 Excel 数据,然后导入数据库(SQL Server 2008)。

NPOI 库已经部署在运行良好的系统中,但是我发现很难在网络上找到关于收集数据和导入数据的示例代码。

我想知道是否有任何有此类工作经验的人可以在示例代码、教程等方面为我指明正确的方向?

或者是否有人可以推荐一个更好的 NPOI 替代方案?

【问题讨论】:

  • 您的服务器(即接收 .xls 文件并提取数据的机器上)是否安装了 Microsoft Office Excel?
  • C# MVC 是指 ASP.NET MVC 吗?

标签: c# sql-server excel import


【解决方案1】:

您的数据库服务器或您的应用程序都可以处理导入数据。

要让数据库执行此操作,请构建一个 SSIS 包(上面推荐的 DTS 的答案,但 DTS 已被弃用)。最简单的方法是使用 SQL Server Management Studio 将数据“导入”到数据库中(右键单击数据库并选择任务)。导入的最后一步允许您将导入设置保存为 SSIS 包。然后,您将从您的应用程序中执行 SSIS 包。

您的应用程序还可以通过几种不同的方式直接处理它。 Windows 附带用于 Excel 文件的 ODBC 驱动程序,或者您可以使用 Excel API 在应用程序中打开工作簿,将数据带入您的应用程序,然后将其写入数据库。只要您需要的所有数据只是表格中的文本(如果您需要评估格式或不仅仅是获取文本数据,您必须使用 API),ODBC 路由可能实现起来更快。

【讨论】:

    【解决方案2】:

    使用 Microsoft Jet: 首先创建一个连接

    string Con2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
    filename + @";Extended Properties='Excel 12.0;IMEX=1'";
    System.Data.OleDb.OleDbConnection ExcelConnection =
     new System.Data.OleDb.OleDbConnection(Con2);
    

    然后做一些类似...

    DataSet ds = new DataSet();
    
     // Create OleDbCommand object and select data from worksheet TABNAME
     OleDbCommand cmd_hulpkostenplaatsen = new OleDbCommand("SELECT * FROM [TABNAME$]", ExcelConnection);
            OleDbDataAdapter oleda_hulpkostenplaatsen = new OleDbDataAdapter();
            oleda_hulpkostenplaatsen.SelectCommand = cmd_hulpkostenplaatsen;
            oleda_hulpkostenplaatsen.Fill(ds, "HULPKOSTENPLAATSEN");
    
            foreach (DataRow row in ds.Tables["HULPKOSTENPLAATSEN"].Rows)
            {
            }
    

    【讨论】:

      【解决方案3】:

      您会考虑运行 DTS 包吗? 根据数据量以及是否需要进行任何转换,考虑使用 SSIS 包从您的代码运行可能会很有趣。 Execute a SSIS package FROM VB.NET or C#

      【讨论】:

        【解决方案4】:

        (商业)工具Aspose.Cells 通常是我用来阅读 Microsoft Office Excel 文件的工具。

        正如@Negative0 所说,另一种选择是使用 ADO.NET。

        【讨论】:

          【解决方案5】:

          根据您的 excel 文件的布局(即,如果它是表格),您可以使用 ADO.Net 来执行此操作。您可以像查询真正的数据库一样从工作表中查询数据并提取数据。

          您可以从连接字符串开始:http://www.connectionstrings.com/excel

          然后在 MSDN 上有一个 vb.net 示例,您可以轻松地将其转换为 C#:http://support.microsoft.com/kb/311731

          【讨论】:

            猜你喜欢
            • 2016-02-09
            • 2020-02-27
            • 2018-04-17
            • 1970-01-01
            • 1970-01-01
            • 2022-07-03
            • 2017-07-05
            • 2020-09-24
            • 2017-03-09
            相关资源
            最近更新 更多