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

时间:2011-01-17 21:36:53

标签: c# excel oledb

我已经用作我想要做这个网站的基础: http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=8500

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

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

问题是我的Excel电子表格没有任何标题。我需要做的是:

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

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

3 个答案:

答案 0 :(得分:6)

如果您仍然感兴趣,

没有真正的方法来指定要使用OleDb Insert Command写入的单元格,OleDbCommand将自动转到指定列中的下一个打开行。但是,您可以使用更新查询,例如:

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;

答案 1 :(得分:4)

请参阅如何使用ADO.NET在http://support.microsoft.com/kb/316934上使用Visual Basic .NET在Excel工作簿中检索和修改记录

表命名约定

有几种方法可以在Excel工作簿中引用表(或范围):

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

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

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

    Select * from [Sheet1$A1:B10] 
    

http://support.microsoft.com/kb/316934

插入

答案 2 :(得分:0)

我假设您使用标准的MS-Excel COM对象与excel文件进​​行交互。您可以尝试使用系统级ODBC驱动程序与excel文件进​​行交互。根据是否存在标题使用它时,您需要在oledbConnection字符串中指定相同的内容,然后您可以直接输入值到您想要的任何单元格。