采用OleDB读取EXCEL文件
1、声明连接字段
string
strConn =
"Provider=Microsoft.Jet.OLEDB.4.0;"
+
"Data Source="
+ Path +
";"
+
"Extended Properties=Excel 8.0;"
;其中Path为你要打开的Excel文件的路径
2、声明OleDB对象
OleDbConnection OleConn = new OleDbConnection(strConn);
3、打开Excel文件
OleConn.Open();
4、获取查询结果
sql = "select * from [Sheet1$]";
OleDbDataAdapter OleAdapt = new OleDbDataAdapter(sql,OleConn);
DataSet ds = new DataSet();
OleAdapt.Fill(ds, "Sheet1");
实例代码:
public DataSet getData(string path,string sql)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
sql = "select * from [Sheet1$]";
OleDbDataAdapter OleAdapt = new OleDbDataAdapter(sql,OleConn);
DataSet ds = new DataSet();
OleAdapt.Fill(ds, "Sheet1");
return ds;
}
采用OleDB向EXCEL文件中写入
System.Data.OleDb.OleDbCommandBuilder builder=
new
OleDbCommandBuilder(myCommand);
//QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。
builder.QuotePrefix=
"["
;
//获取insert语句中保留字符(起始位置)
builder.QuoteSuffix=
"]"
;
//获取insert语句中保留字符(结束位置)
DataSet newds=
new
DataSet();
myCommand.Fill(newds ,
"Table1"
) ;
for
(
int
i=0;i<oldds.Tables[0].Rows.Count;i++)
{
//在这里不能使用ImportRow方法将一行导入到news中,因为ImportRow将保留原来DataRow的所有设置(DataRowState状态不变)。
在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的DataRowState!=Added
DataRow nrow=newds.Tables[
"Table1"
].NewRow();
for
(
int
j=0;j<newds.Tables[0].Columns.Count;j++)
{
nrow[j]=oldds.Tables[0].Rows[i][j];
}
newds.Tables[
"Table1"
].Rows.Add(nrow);
}
myCommand.Update(newds,
"Table1"
);
myConn.Close();
}
其中oldds为添加源