如何使用c#在VS 2012中使用Microsoft.Ace.Oledb在Excel工作表中插入新行

本文关键字:Excel Oledb 工作 新行 插入 Ace 何使用 VS 2012 Microsoft | 更新日期: 2023-09-27 18:26:26

我正在执行以下操作,使用c#代码中的Microsoft.ACE.OLEDB作为提供程序在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"修改的总权限,但仍然有同样的例外。我在这里真的很失落,我尝试了很多事情,我会感谢任何帮助;我敢肯定这是个愚蠢的错误!

如何使用c#在VS 2012中使用Microsoft.Ace.Oledb在Excel工作表中插入新行

我用你的代码做了一个测试:如果你删除了'Mode=ReadWrite;ReadOnly=False;'连接字符串的。