将Excel数据导入到数据库
我刚刚开始一个项目,我的系统(用.NET MVC编写)将不得不从指定的文件中读取Excel数据,并导入数据库(SQL Server 2008)。
NPOI库已经部署在系统中,运行良好,但是我发现在Web上search数据并导入样本代码非常困难。
我想知道是否有这样的工作经验的人可以指示我正确的方向示例代码,教程等?
或者如果有人可以推荐一个更好的替代NPOI?
根据您的Excel文件的布局(即如果它是表格),您可以使用ADO.Net来做到这一点。 您可以从工作表查询数据,并像查询真正的数据库一样提取数据。
您可以从连接string开始: http : //www.connectionstrings.com/excel
然后在MSDN上有一个vb.net的例子,你可以很容易地转换为C#: http : //support.microsoft.com/kb/311731
(商业)工具Aspose.Cells通常用于读取Microsoft Office Excel文件。
另一种select,如@ Negative0所述,将使用ADO.NET。
你会考虑运行一个DTS包吗? 根据数据量,如果有任何转换,可以考虑从你的代码运行一个SSIS包。 从VB.NET或C#执行SSIS包
使用Microsoft Jet:首先创build一个连接
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) { }
数据库服务器或应用程序都可以处理导入数据。
为了让数据库做到这一点,build立一个SSIS包(上面build议DTS的答案,但DTS已被弃用)。 最简单的方法是使用SQL Server Management Studio将数据“导入”数据库(右键单击数据库并select“任务”)。 导入的最后一步允许您将导入设置保存为SSIS包。 然后,您将从您的应用程序执行SSIS包。
您的应用程序也可以通过几种不同的方式直接处理它。 Windows附带有用于Excel文件的ODBC驱动程序,也可以使用Excel API在应用程序中打开工作簿,将数据带入您的应用程序,然后将其写入数据库。 只要所需的所有数据只是表格中的文本(如果需要评估格式或不只是获取文本数据,就必须使用API),ODBC路由可能会更快实施。