C#连接Excel表格,以实现对Excel表格的读取和写入。
首先,应确保ODBC中已安装有Excel表格文件的驱动"Microsoft Excel Driver(*.xls)"。
控制面板->管理工具->数据源(ODBC)如下:
命名空间:
using System.Data.OleDb;
连接语句:string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "DataSource=test.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
//DataSource是打开的Excel表格的文件名。
//因为连接的Excel表格是2007的,所以为Excel8.0(若为03版,应为4.0)。
//HDR=Yes/No Yes表示第一行中包含列名,而不是数据。No即不包含,直接是数据。
//IMEX=1 通知驱动程序始终将“胡混数据列作为文本读取”
//注意大小写区别
OleDbConnection conn = new OleDbConnection(connStr);
查询语句:
OleDbDataAdapter myAdapter = new OleDbDataAdapter("select * from [Sheet1$]",conn);
//Excel表格默认有三个表格,是Sheet1、Sheet2、Sheet3,在引用时应加 [$]加以表示。
//到这里,就已经将test.xls文件中的表格Sheet1中的内容读取到DataAdapter中了。
DataSet myDataSet = new DataSet();myAdapter.Fill(myDataSet);
//将查询的结果填充至DataSet中,即可对DataSet中的DataTable的行列单元格内容进行访问了喔~
新建表格:
sql = "CREATE TABLE test ([stuId] varchar,[stuName] varchar)";
OleDbCommand myCommand = new OleDbCommand(sql, myConnToExcel);
myCommand.ExecuteNonQuery();
插入语句:
for (int i = 0; i < dataGridView1.RowCount; i++){
sql = "insert into demo values (\'" + dataGridView1.Rows[i].Cells[0].Value.ToString() + "\',\'" +
dataGridView1.Rows[i].Cells[1].Value.ToString() + "\')";
myCommand = new OleDbCommand(sql, myConnToExcel);myCommand.ExecuteNonQuery();
}
删除/更新语句:
这个就异曲同工了~~