C# 使用OleDb在C中向Excel 2007插入数据#

C# 使用OleDb在C中向Excel 2007插入数据#,c#,excel,oledb,C#,Excel,Oledb,我已将此网站用作我想做的事情的基础: 因此,基本上,我想在我的C#Windows表单应用程序中使用OleDb向现有Excel电子表格中的特定单元格添加一些数据。我找到的所有示例都希望有某种类型的标题单元格。如果我的“A1”单元中有“标题”,我可以使用: "INSERT INTO [SHEET1$] (Title) Values ('Book')" 问题是我的Excel电子表格没有任何标题。我需要做的是: "INSERT INTO [SHEET1$] (A15) Values ('Book

我已将此网站用作我想做的事情的基础:

因此,基本上,我想在我的C#Windows表单应用程序中使用OleDb向现有Excel电子表格中的特定单元格添加一些数据。我找到的所有示例都希望有某种类型的标题单元格。如果我的“A1”单元中有“标题”,我可以使用:

"INSERT INTO [SHEET1$] (Title) Values ('Book')"  
问题是我的Excel电子表格没有任何标题。我需要做的是:

"INSERT INTO [SHEET1$] (A15) Values ('Book')".

有人能帮我弄清楚如何将数据放在电子表格周围的特定单元格中吗?

我假设您正在使用标准MS Excel COM对象与Excel文件交互。您可以尝试使用系统级ODBC驱动程序与excel文件交互。根据标题的存在与否使用此选项时,您需要在OLEDB连接字符串中指定相同的值,然后您可以直接向任意单元格输入值。

请参阅如何使用ADO.NET检索和修改Excel工作簿中的记录,其中Visual Basic.NET位于

表命名约定 有几种方法可以引用Excel工作簿中的表(或范围):

  • 使用工作表名称后跟美元符号(例如,[Sheet1$]或[My Worksheet$])。以这种方式引用的工作簿表包括工作表的整个使用范围

    Select * from [Sheet1$] 
    
  • 使用具有定义名称的范围(例如,[MyNamedRange]):

  • 使用具有特定地址的范围(例如,[Sheet1$A1:B10]):


如果您仍感兴趣,请从插入

使用OleDb Insert命令无法指定要写入的单元格,OleDb命令将自动转到指定列中的下一个打开行。但是,您可以使用更新查询,例如:

sql = "Update [Sheet1$A1:A15] SET A15 = 'DesiredNumber'"; 
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
如果您已经定义了以下内容,那么这应该可以工作:

System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\Example.xls';Extended Properties=Excel 8.0;");
MyConnection.Open();
myCommand.Connection = MyConnection;

这些都行不通。所以我决定使用Microsoft.Office.Interop.Excel。正如在这里发现的:当使用上面的sql时,我得到错误“没有为一个或多个必需参数提供值”
sql = "Update [Sheet1$A1:A15] SET A15 = 'DesiredNumber'"; 
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\Example.xls';Extended Properties=Excel 8.0;");
MyConnection.Open();
myCommand.Connection = MyConnection;