将Excel数据导入数据库

时间:2011-02-10 14:42:37

标签: c# sql-server excel import

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

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

我想知道是否有任何有这类工作经验的人可以指出我在样本代码,教程等方面的正确方向?

或者,如果有人可以推荐更好的替代NPOI?

5 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

你会考虑运行DTS包吗? 根据数据量以及是否有任何转换,可以考虑从代码中运行SSIS包。 Execute a SSIS package FROM VB.NET or C#

答案 2 :(得分:1)

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

另一种选择,如@ Negative0所述,将使用ADO.NET。

答案 3 :(得分:1)

使用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)
        {
        }

答案 4 :(得分:1)

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

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

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