繁体   English   中英

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

[英]Using OleDb to insert data into Excel 2007 in C#

我用它作为我想做这个网站的基础: 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')".

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

如果你还有兴趣,

没有真正的方法来指定要使用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;

请参阅http://support.microsoft.com/kb/316934,了解如何使用ADO.NET在Visual Studio .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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM