使用OleDb在C#中将数据插入到Excel 2007中
我曾经作为我想要做这个网站的基地: http : //www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=8500
所以基本上,我想在我的C#Windows窗体应用程序中使用OleDb将一些数据添加到我现有的Excel电子表格中的特定单元格。 我发现所有的例子都希望我有一些types的标题单元格。 就像如果我的'A1'单元格中有“标题”,我可以使用:
"INSERT INTO [SHEET1$] (Title) Values ('Book')"
问题是我的Excel电子表格没有任何标题。 我需要做的是:
"INSERT INTO [SHEET1$] (A15) Values ('Book')".
有人可以帮我弄清楚如何将数据放在电子表格的特定单元格中吗?
如果你还有兴趣,
没有真正的方法来指定要使用OleDb插入命令写入的单元格,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;
请参阅如何使用ADO.NET在Excel工作簿中使用Visual Basic .NET检索和修改logging , url为http://support.microsoft.com/kb/316934 。
表命名约定
有几种方法可以在Excel工作簿中引用表(或范围):
-
使用工作表名称后跟一个美元符号(例如,[Sheet1 $]或[My Worksheet $])。 以这种方式引用的工作簿表格包括工作表的整个使用范围。
Select * from [Sheet1$]
-
使用具有定义名称的范围(例如,[MyNamedRange]):
Select * from [MyNamedRange]
-
使用具有特定地址的范围(例如[Sheet1 $ A1:B10]):
Select * from [Sheet1$A1:B10]
我假设你正在使用标准的MS-Excel COM对象与Excel文件进行交互。 您可以尝试使用系统级ODBC驱动程序与Excel文件进行交互。 当根据是否存在头文件来使用它时,需要在oledbConnectionstring中指定相同的值,然后可以直接将值input到所需的任何单元格中。