当前位置:  开发笔记 > 编程语言 > 正文

用OLEDB写入excel文件

如何解决《用OLEDB写入excel文件》经验,为你挑选了2个好方法。

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

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

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

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

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



1> 小智..:

我也在寻找和回答,但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;\";"



2> 小智..:

您需要添加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\";


不太正确 - 使用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 "";";
所有必要的是`Provider = Microsoft.Jet.OLEDB.4.0;数据源= C:\ Docs\Test.xls; Mode = ReadWrite;扩展属性=""Excel 8.0; HDR =是""`MaxScanRows和IMEX依赖在某种程度上的注册表设置,通常不是必需的.
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有