Office编程杂谈(3):在.net中导入excel数据
在.net平台开发 winform和 asp.net程序的时候, 常常要将excel中的数据导入到数据库。这样做一般可以方便软件用户将原有数据轻松的转移到我们开发的软件中。方便软件的实施。
当然从excel中导入数据, 也有2种方法。
1、使用Microsoft Excel 11.0 Object Library 组件
2、使用ADO.net
2种方法做个比较, 当然大多数都会选择使用第二种, 因为第二种 方法简直就和我们操作数据库一样方便。
下面是使用ado.net导入excel的一个简单的DEMO, 演示了一个从 xls文件中批量录入卡号的功能。
使用ado.net导入excel的具体实现:
第一步、在asp.net中需首先把 .xls的文件上传到服务器。
若是winform中只需要选择 .xls的文件即可
第二步、使用ado.net代码来操作excel文件
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(excel文件路径) + ";Extended Properties=Excel 8.0";
OleDbConnection cn = new OleDbConnection(connstr);
cn.Open();
//取出excel中所有的表格
DataTable dt = cn.GetOleDbSchemaTable(
OleDbSchemaGuid.Tables,
new object[] { null, null, null, "TABLE" }
);
string sql = "select * from [" + dt.Rows[0]["TABLE_NAME"] + "]";
DataTable dtCard = new DataTable();
OleDbDataAdapter ada = new OleDbDataAdapter(sql, cn);
ada.Fill(dtCard);
foreach (DataRow r in dtCard.Rows)
{
string cardnumber = r[0].ToString();
string cardPwd = r[1].ToString();
// insert into card db
// to do
}
cn.Close();
cn.Dispose();
//
File.Delete(Server.MapPath(xlsName));
当然实际中有相当多的情况碰到的excel文件可不是我这个demo的这么简单, 若是涉及到excel的结构很复杂, 里面有很多的合并单元格, 那只能调试看一下,这些合并单元格后的数据到了 这个datatable中是一个什么样的结构。
图示调试: