在线急等,c#如何用操作数据库的模式来操作excel, 求大神指点~
本帖最后由 xiaoao314224236 于 2013-12-27 09:56:41 编辑 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
//Sql语句
string strExcel = "select * from [sheet1$]";
//定义存放的数据表
DataSet ds = new DataSet();
//连接数据源
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
//适配到数据源
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName);
// ds.Tables[strSheetName];
DataTable KK = ds.Tables[strSheetName];
string ss = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[0].Columns.Count;j++ )
{
ss += ds.Tables[0].Rows[i][j].ToString() + " ";
}
}
ds.Tables[0].Rows[0][0] = 100;
// da.Update(ds, Table_name);
[color=#FF6600] adapter.Update(ds, strSheetName);
更新其值的时候会报错(当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand)
conn.Close();
return ds.Tables[strSheetName];
网上有的说是因为主键原因,但是EXCEL 没有主键,据我所知的确可以用这种方式去做的,求大神指点
[解决办法]
這個是操作數據集的問題,從數據庫里读出的数据都是 有列名的,你从Excel 读出 的数据 也有列名 不过都是默认的 column1 column2 之类的,你需要建一个datatable 建列 建主键(datatable 有主键属性的)
然后把datatable 放到 dataset里 在更新
[解决办法]
你的adapter的updatecommand 对象没有赋值。
还有,excel自己修改的功能已经很强大了。为什么要用ado.net呢