繁体   English   中英

Update命令使用OLEdb和dataaset更新Excel中的单行。 (C#)

[英]Update command to update single row in Excel using OLEdb and dataaset. (C#)

我正在从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。

该文档显示了与以下命令相似的更新命令语法:

更新表SET fieldID = 1,说明='nice'WHERE RegionID = 1但这对我不起作用,我需要更新for循环中的当前行。

任何帮助,谢谢

哇。

我的意思是

我不认为XP可以支持特定的自我鞭method方法。

我强烈建议您放弃OLEDB并选择许多用于处理excel文件的API。 您可以在这里找到很多: http : //www.codeplex.com/site/search?projectSearchText=excel

我用过一对,他们工作得很好。 另外,如果您打算仅支持Office 2007+,请签出OpenXML sdk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM