使用OLEDB连接查询Excel 2013数据透视表并将其转换为C#DataTable

时间:2013-11-27 21:15:08

标签: c# excel oledb

我有以下代码从Excel工作簿中的工作表中选择包含3个数据透视表的所有内容。

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + spreadsheetLocation + ";Extended Properties='Excel 12.0 Xml;HDR=NO;'";
string sql = "SELECT * FROM [SheetName$]";
OleDbConnection objConnection = new OleDbConnection(connectionString);
OleDbDataAdapter oda = new OleDbDataAdapter(sql, objConnection);
DataTable dt = new DataTable();
oda.Fill(dt);

但是,我想根据需要选择单个数据透视表,而不是选择整个工作表。每个数据透视表都有一个名称(当前为PivotTable1,PivotTable2和PivotTable3)。我希望有类似的东西:

string sql = "SELECT * FROM [PivotTable1]";

但我无法得到任何工作。我不想依赖于工作表上特定位置的数据透视表。 Excel文档正由标准用户上传,其格式不受我的控制。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

与MS Excel中的数据透视表相同的功能为OleDb提供了TRANSFORM语句,这与SQL中的PIVOT等效。 如果您想从不同的工作簿中获取数据,请在CP上查看此提示:How to: Get Data from Multiple Workbooks using One OleDbConnection?