我有以下代码从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文档正由标准用户上传,其格式不受我的控制。
有什么想法吗?
答案 0 :(得分:0)
与MS Excel中的数据透视表相同的功能为OleDb提供了TRANSFORM语句,这与SQL中的PIVOT等效。 如果您想从不同的工作簿中获取数据,请在CP上查看此提示:How to: Get Data from Multiple Workbooks using One OleDbConnection?