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

时间:2013-08-04 11:22:26

标签: c# insert oledb excel-2010 ms-jet-ace

我正在执行以下操作,使用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”修改,但仍然有相同的例外。 我真的迷失在这里,我尝试了很多东西,我会感激任何帮助;我很确定这是一个愚蠢的错误!

1 个答案:

答案 0 :(得分:0)

我使用您的代码进行了测试:如果您删除'Mode = ReadWrite; ReadOnly = False;'似乎有效连接字符串。