我刚刚开始一个项目,我的系统(用.NET MVC编写)必须从指定文件中读取Excel数据,然后导入数据库(SQL Server 2008)。
NPOI库已部署在系统中,运行良好,但我发现很难在Web上找到有关收集数据和导入数据的示例代码。
我想知道是否有任何有这类工作经验的人可以指出我在样本代码,教程等方面的正确方向?
或者,如果有人可以推荐更好的替代NPOI?
答案 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>