用OLEDB写入excel文件

Dan*_*elb 8 c# oledb excel

有没有人知道如何通过C#中的OLEDB写入excel文件(.xls)?我正在做以下事情:

   OleDbCommand dbCmd = new OleDbCommand("CREATE TABLE [test$] (...)", connection);
   dbCmd.CommandTimeout = mTimeout;
   results = dbCmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

但是我收到一条带有消息的OleDbException:

"无法修改表'test $'的设计.它位于只读数据库中."

我的连接似乎很好,我可以选择数据,但我似乎无法将数据插入excel文件,有谁知道如何通过OLEDB读取/写入excel文件?

小智 14

我也在寻找和回答,但Zorantula的解决方案对我不起作用.我在http://www.cnblogs.com/zwwon/archive/2009/01/09/1372262.html上找到了解决方案

我删除了ReadOnly=false参数和IMEX=1扩展属性.

IMEX=1属性以导入模式打开工作簿,因此结构修改命令(如CREATE TABLEDROP TABLE)不起作用.

我的工作连接字符串是:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=workbook.xls;Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=Yes;\";"
Run Code Online (Sandbox Code Playgroud)


小智 8

您需要添加ReadOnly=False;到您的连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fifa_ng_db.xls;Mode=ReadWrite;ReadOnly=false;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";
Run Code Online (Sandbox Code Playgroud)

  • 不太正确 - 使用ReadOnly属性会导致错误"System.Data.OleDb.OleDbException:找不到可安装的ISAM".IMEX = 0会阻止文件只读.适合我的字符串(C#)是:@"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = {0}; Mode = ReadWrite; Extended Properties =""Excel 8.0; HDR = YES; MaxScanRows = 0; IMEX = 0 "";"; (7认同)
  • 所有必要的是`Provider = Microsoft.Jet.OLEDB.4.0;数据源= C:\ Docs\Test.xls; Mode = ReadWrite;扩展属性=""Excel 8.0; HDR =是""`MaxScanRows和IMEX依赖在某种程度上的注册表设置,通常不是必需的. (2认同)