采用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为添加源