Asp.Net(C#)使用oleDbConnection 连接Excel
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/MyExcel.xls;Extended Properties= "Excel 8.0;HDR=Yes;IMEX=1"
针对如果上连接字符串 对相关属性进行说明如下:"HDR=Yes;”指示第一行中包含列名,而不是数据,"IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取。Excel 8.0 针对Excel2000及以上版本,Excel5.0 针对Excel97。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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名称,可使用元数据方式:
1
2
3
4
5
6
7
8
9
10
11
|
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文件与普通数据库操作极为类似,参见以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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.xls cn.Open(); //创建TestSheet工作表 cmd.ExecuteNonQuery(); //添加数据 cmd.CommandText = "INSERT INTO TestSheet VALUES(1,'elmer','password')" ; cmd.ExecuteNonQuery(); //关闭连接 cn.Close(); |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnsendblog.com/?p=84