2

我正在执行以下操作以使用 Microsoft.ACE.OLEDB 作为 c# 代码中的提供程序在 Excel 工作表中插入一行: 1- 我有以下连接字符串:

string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.xlsx;Mode=ReadWrite;ReadOnly=False;Extended Properties=""Excel 12.0 Xml;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text;HDR=YES""");

2-并插入以下代码:

        string strSQL = "INSERT INTO [sheet1$] (Id, Name, parentId) VALUES(196,'test',1)";
        OleDbConnection excelConnection = new OleDbConnection(connectionString);
        excelConnection.Open(); 
        OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection);
        dbCommand.ExecuteNonQuery();
        dbCommand.Dispose();
        excelConnection.Close();
        excelConnection.Dispose();

但是一旦我运行我的代码,打开连接时就会出现以下 OleDbException 异常:

Could not find installable ISAM

我进行了搜索,发现它与错误的连接字符串格式有关,所以经过几次尝试后,我发现当我删除“ReadOnly = False;”时 从连接字符串 OleDbException 异常更改为:

Operation must use an updateable query

执行命令“dbCommand.ExecuteNonQuery”时;所以我也进行了搜索,发现这是一个权限问题,所以我给了 Excel 文件一个由用户组“Everyone”修改的总权限,但仍然有同样的例外。我真的迷路了,我尝试了很多东西,我将不胜感激;我很确定这是一个愚蠢的错误!

4

1 回答 1

0

我对您的代码进行了测试:如果您删除 'Mode=ReadWrite;ReadOnly=False;' 似乎可以工作 的连接字符串。

于 2017-08-28T10:37:05.310 回答