【问题标题】:Write Data to Excel using Oledb使用 Oledb 将数据写入 Excel
【发布时间】:2020-12-30 09:09:03
【问题描述】:

是否可以使用 Oledb 将数据写入普通的 excel 中?

没有表结构或任何东西,它是一个用户文档。

当我尝试时,我总是遇到 OleDbException

  • “INSERT”查询回复: 操作必须使用可更新的应用程序。
  • “更新”查询回复: 没有为一个或多个必需参数指定值。

我的代码:

  using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\[...]\Classeur.xls" + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\""))
        {
            connection.Open();
            OleDbCommand commande = new OleDbCommand(
              "INSERT INTO [Feuil1$](F1,F2,F3) VALUES ('A3','B3','C3');", connection);
            commande.ExecuteNonQuery();

            connection.Close();
            connection.Dispose();
        }

新测试(没有成功!):

       using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\Users\[...]\Classeur.xls" + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\""))
        {
            string column = "A";
            string row = "1";
            string worksheetName = "Feuil1";
            string data = "TEST";
            connection.Open();
            string commandString = String.Format("UPDATE [{0}${1}{2}:{1}{2}] SET F1='{3}'", worksheetName, column, row, data);
            OleDbCommand commande = new OleDbCommand(
                commandString, connection);
            connection.Close();
            connection.Dispose();
        }

【问题讨论】:

  • this的文章
  • 我已经下载了这个项目(具有不适合我的功能正是单元版本),并且在他的代码中他使用像我这样的更新.. 我在 FrameWork 3.5 上,也许是一个原因?
  • 我认为不是固件版本的原因。提供者不同于文章中的代码到你的代码
  • 他使用:“Jet OLEDB 4.0”(适用于 Excel 8)和“Ace OLEDB 12.0”(适用于 Excel 12)我尝试更改提供程序、版本、excel 文件的版本(交叉测试)和每次都是同样的错误!而且,在我的查询中,F1 是列,但我从不指定行。什么可以解释错误,但我没有看到任何指定它的示例。
  • 您下载的课程也出现同样的错误?

标签: c# excel oledb


【解决方案1】:

我终于找到了! IMEX 的简单问题(为此浪费了很多时间!)

所以如果有人有同样的问题:

 //for reading data 
 Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\"

 //for writing data 
 Extended Properties=\"Excel 8.0;HDR=NO;IMEX=3;READONLY=FALSE\"

【讨论】:

    【解决方案2】:

    这种用于写入数据的 IMEX 情况让我发疯了好几个月,我不得不删除它以使其正常工作。 我刚刚找到 [CheapD] 的答案,它完美无缺,谢谢Cheap。

    我建议添加 MODE 参数:

    Extended Properties='Excel 12.0; HDR=Yes; IMEX=3; MODE=Share; READONLY=False';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多