0
我从Excel电子数据表导入数据。我只使用OLEDB来阅读。但我无法将结果保存回原始文件。以下是我的代码到目前为止。使用OLEdb和数据集在Excel中更新单行更新命令。 (C#)
string ExcelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Mode=ReadWrite;" +
"Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";",
Server.MapPath("./Uploads/" + excelName));
try
{
OleDbDataAdapter ExcelDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$A8:AZ67]", ExcelConnectionString);
DataSet objDataSet = new DataSet();
ExcelDataAdapter.Fill(objDataSet, "ExcelTable");
for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++)
{
Slab slb = new Slab();
slb.ReceiveDate = objDataSet.Tables[0].Rows[i].Field<DateTime>(0);
slb.VesselName = objDataSet.Tables[0].Rows[i].Field<string>(1);
slb.Lot = Convert.ToInt16(objDataSet.Tables[0].Rows[i].Field<double>(2));
slb.SlabSource = objDataSet.Tables[0].Rows[i].Field<string>(3);
slb.CertificateNumber = objDataSet.Tables[0].Rows[i].Field<string>(4);
//I think the next two lines do the same thing.
objDataSet.Tables[0].Rows[i][4] = "message here";
objDataSet.Tables[0].Rows[i].SetField<string>(51, "message here");
ExcelDataAdapter.Update(objDataSet, "ExcelTable");
.............
}
我得到以下错误:当修改行的DataRow通过收集
更新需要一个有效的UpdateCommand。
文档显示更新命令类似的语法:
UPDATE表SET fieldID = 1,说明= '好' WHERE RegionID = 1 但对我来说这不会工作,我需要更新for循环中的当前行。
任何帮助apprecaited, 感谢
什么是自我鞭策? 我使用OLEDB,因为我不需要在服务器上安装Office。 OLEDB应该可以工作。我会更新我的问题,我已经取得了一些进展。 – Slabo 2009-09-15 03:08:19
鞭打自己...... OLEdb意味着我在鞭打自己吗?这真的很难吗? – Slabo 2009-09-15 03:29:02
与处理文档的基于框架的方法相比,绝对如此。请注意 - 您正努力将修改保存到磁盘上,您是不是? OLEDB是相当古老的技术;自从它出现以来,事情已经有所改善。而且你不需要安装办公室来使用我在答案中提到的任何事情。真的,下载一对夫妇,并采取他们的旋转。你会更快乐。 – Will 2009-09-15 14:30:56