使用Oledb将数据写入Excel

时间:2013-10-29 15:44:29

标签: c# excel oledb

是否可以使用Oledb将数据写入公共Excel?

没有表格结构或任何内容,它是用户文档。

当我尝试时,我总是有一个OleDbException

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

我的代码:

  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();
        }

2 个答案:

答案 0 :(得分:5)

我终于找到了! 关于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\"

答案 1 :(得分:0)

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

我建议添加 MODE 参数:

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