2016-05-13 56 views
0

我想用sql查询excel文档。我想用c#和ado来执行查询。我不想在服务器上安装Office。有没有办法做到这一点?如何使用sql查询excel文档

+0

使用csv而不是excel文件。 Mysql和sqlserver都可以使用csv文件并读取数据。 – Nived

+0

@Nived我编辑了这个问题 – Luke101

+0

你可以从字节数组中创建一个dataTable(http://stackoverflow.com/questions/1300043/convert-a-byte-array-into-datatable)并查询它吗? –

回答

1

你可以使用一个OLEDB连接访问您的Excel电子表格,这里是用数据表

string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Extended Properties=Excel 12.0;", "myDocument.xlsx"); 

OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM MyTable", connString); 

DataSet ds = new DataSet(); 
adapter.Fill(ds, "TheData"); 
DataTable theTable = ds.Tables["TheData"]; 

一旦你做到了这一点,你可以像

theTable.Rows[indexOfRow].ItemArray[indexOfItem] //The items are stored as objects 

这个具体的例子访问值的示例是.xlsx文件

+0

嗨,谢谢你的回答。有没有办法做到这一点,而不将文件保存到磁盘?也许,查询在内存中加载的excel。 – Luke101

+0

@卢克101关心扩大,也许举个例子? :) –

+0

在连接它有“myDocument.xlsx”。这意味着我必须先将文件保存到磁盘。我有一个excel文件的字节数组。有没有办法查询字节数组呢?没有将excel文件保存到磁盘。 – Luke101