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



我有以下代码,它从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);

但是,我希望根据需要选择各个数据透视表,而不是选择整个工作表。每个数据透视表都有一个名称(当前为数据透视表1、数据透视表2和数据透视表3)。我希望有这样的东西:

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

但我什么都做不了。我不想依赖于数据透视表在图纸上的特定位置。Excel文档由标准用户上传,其格式超出了我的控制范围。

有什么想法吗?

与MS Excel中的数据透视表相同的功能为OleDb提供了TRANSFORM语句,它等效于SQL中的PIVOT。如果你想从不同的工作簿中获取数据,请看一下CP上的提示:如何:使用一个OleDbConnection从多个工作簿获取数据?

最新更新