如何使用oledb c#.net在excel中插入新行

我正在尽我所能在Excel文件中插入一个新的数据行。 请看一看。 我正在面对这个问题使用C#.net框架(3.5)

码:

try{ string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\rising rent\\csharp-Excel.xls;Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;MAXSCANROWS=15;READONLY=FALSE;ImportMixedTypes=Text'"; OleDbConnection conn = new OleDbConnection(ConnectionString); conn.Open(); OleDbCommand cmd = new OleDbCommand("INSERT INTO [Inventory$] (C_DATE) VALUES('555')",conn); cmd.ExecuteNonQuery(); conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } 

错误是这个请看看,分享你的看法

“System.Data.OleDb.OleDbException:操作必须使用系统上System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object&executeResult)System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)上的可更新查询。 Data.OleDb.OleDbCommand.ExecuteCommandText(Object&executeResult)System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior,String method)System.Data.OleDb.OleDbCommand.ExecuteNonQuery()at RisingRentACar.Inventory.button1_Click(Object sender, EventArgs e)在C:\ Users \ Hamza Hafeez \ Documents \ Visual Studio 2015 \ Projects \ RisingRentACar \ RisingRentACar \ Inventory.cs:line 82“

所以你的解决scheme是接近的,我知道这是四个月以上,但帮助别人。 我遇到了同样的问题,终于搞定了。

连接string中不需要全部。 这是为我工作。

 string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileNameAndPath + ";Extended Properties=\"Excel 12.0 Xml; HDR=YES\";"; 

"HDR=YES"意味着第一行有标题单元格。 您可以使用列名插入。

其次查询必须在列名周围有[]。 喜欢:

 command.CommandText = "Insert into [Sheet1$] ([ColumnName]) values('Value')"; 

希望这有助于像我这样的人看了这个post寻找这个问题的答案。

这是我的整个解决scheme:

 private void InsertData(List<string> columnNames, List<string> theValues) { OleDbConnection connection = null; OleDbCommand command = null; string connectionString = ""; string columns = ""; string values = ""; try { connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtDestination.Text + ";Extended Properties=\"Excel 12.0 Xml; HDR=YES\";"; using (connection = new OleDbConnection(connectionString)) { connection.Open(); for (int index = 0; index < columnNames.Count; index++) { columns += (index == 0) ? "[" + Regex.Replace(columnNames[index], @"\t|\n|\r", "\"") + "]" : ", [" + Regex.Replace(columnNames[index], @"\t|\n|\r", "\"") + "]"; values += (index == 0) ? "'" + Regex.Replace(theValues[index], @"\t|\n|\r", "\"") + "'" : ", '" + Regex.Replace(theValues[index], @"\t|\n|\r", "") + "'"; } using (command = connection.CreateCommand()) { command.CommandText = string.Format("Insert into [Sheet1$] ({0}) values({1})", columns, values); command.ExecuteNonQuery(); } } } catch (Exception ex) { ProcessError(ex); } }