我正在从Excel导入数据和电子表格。我只用OLEDB来阅读。但我无法将结果保存回原始文件。以下是我目前的代码。
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,Description ='nice'WHERI RegionID = 1 但这对我不起作用,我需要更新for循环中的当前行。
任何帮助, 感谢
答案 0 :(得分:0)
哇。
我的意思是......哇。
我不认为在XP之后支持特定的自我鞭挞方法。
我强烈建议您放弃OLEDB并选择其中一个用于处理excel文件的API。你可以在这里找到一堆:http://www.codeplex.com/site/search?projectSearchText=excel
我使用了一对夫妇,他们的工作非常好。如果您计划仅支持Office 2007 +,请查看OpenXML sdk。