OleDb读写Excel

来源:互联网 发布:微信平台微网站源码 编辑:程序博客网 时间:2024/06/07 16:43

Microsoft Jet 提供程序用于连接到 Excel 工作簿。在以下连接字符串中,Extended Properties 关键字设置 Excel 特定的属性。“HDR=Yes;”指示第一行中包含列名,而不是数据,“IMEX=1;”通知驱动程序始终将互混数据列作为文本读取。Excel 8.0 针对Excel2000及以上版本,Excel5.0 针对Excel97

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""

注意,Extended Properties 所需的双引号必须还要加双引号。

使用ADO.NET打开、读取并关闭代码示例如下:

using System.Data.OleDb;using System.Data;String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=c:/test.xls;" + "Extended Properties=Excel 8.0;";OleDbConnection objConn = new OleDbConnection(sConnectionString);objConn.Open();OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM [sheet1]", objConn);OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();objAdapter1.SelectCommand = objCmdSelect;DataSet objDataset1 = new DataSet();//Excel中数据填充到数据集objAdapter1.Fill(objDataset1, "XLData");objConn.Close();

从上面可以看出,使用ADO.NET可将Excel当作普通数据库,使用SQL语句来操作。

通过ADO.NET获取Excel文件的各Sheet名称,可使用元数据方式:

String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +     "Data Source=c:/test.xls;" +     "Extended Properties=Excel 8.0;";OleDbConnection cn = new OleDbConnection(sConnectionString);cn.Open();DataTable tb = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);foreach (DataRow row in tb.Rows){    //遍历弹出各Sheet的名称    MessageBox.Show(row["TABLE_NAME"]);}

关于使用ADO.NET创建并写入Excel文件与普通数据库操作极为类似,参见以下代码:

String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +     "Data Source=c:/test.xls;" +     "Extended Properties=Excel 8.0;";OleDbConnection cn = new OleDbConnection(sConnectionString);string sqlCreate = "CREATE TABLE TestSheet ([ID] INTEGER,[Username] VarChar,[UserPwd] VarChar)";OleDbCommand cmd = new OleDbCommand(sqlCreate, cn);//创建Excel文件:C:/test.xlscn.Open();//创建TestSheet工作表cmd.ExecuteNonQuery();//添加数据cmd.CommandText = "INSERT INTO TestSheet VALUES(1,'elmer','password')";cmd.ExecuteNonQuery();//关闭连接cn.Close();

关于SQL语句中用到的数据类型,请查看System.Data.OleDb.OleDbType 枚举。

至此,使用ADO.NET打开、创建、读取、写入、保存并退出已全部实现,总结起来,与数据库操作基本无异,很简单。这种方式的好处就是通用性强,将Excel中内容看作数据表,读取操作简单可靠,适合内容规范的Excel表格的数据读取。缺点是当Excel结构复杂,如含合并单元等时,无法正确读取,甚至出现不可预知的异常。

原创粉丝点击