我有一个自动化Excel的问题,我无法解决。我想模仿“导入外部数据”功能。当我为导入选择多个数据库表时,它对于平面表非常有效,但对于数据透视表则不然。
手动方式
我有一个包含2个表(帐户和事务)的Access数据库,由外键(事务表中的“account”)链接。我想立即导入到数据透视表。通常的方法是点击“数据” - > “外部数据”,然后在对话框中选择两个表,然后选择“数据透视表”并单击“确定”。现在数据透视表位于活动工作表中,右侧有字段列表,它提供导入表层次结构中的所有字段。
这是我想要模仿上述数据库文件的内容。有谁知道这是如何工作的?
我尝试了什么
我已经尝试记录和调整宏,但没有用,因为它记录了不完整和有缺陷的代码。不完整是因为记录的代码没有创建数据模型,但这显然是必要的(?)。因为代码没有运行有缺陷,所以它的语法不正确。
我可以从一个数据库表中成功创建数据透视表,如下所示:
Excel.PivotCaches pivotCaches = workbook.PivotCaches();
Excel.PivotCache pivotCache = pivotCaches.Create(Excel.XlPivotTableSourceType.xlExternal,
Type.Missing, Type.Missing);
pivotCache.Connection = conStr;
pivotCache.MaintainConnection = true;
pivotCache.CommandText = "Accounts";
pivotCache.CommandType = Excel.XlCmdType.xlCmdTable;
Excel.PivotTables pivotTables = sheet.PivotTables();
Excel.PivotTable pivotTable = pivotTables.Add(pivotCache, sheet.get_Range("A3", "C20"), "Pivot", Type.Missing, Type.Missing);
但是在尝试获取多个数据库表的许多尝试中,它都失败了。
多个表的方法是什么?
请记住,我不一定知道表名和连接字段,而且我不想失去表之间的区别,它应该保存在数据透视表字段列表中以便分层选择字段。此外,一个包罗万象的SQL查询将严重损害性能。
请帮助我!
PS:我在Office 2013上使用C#作为我的首选语言。
/ edit1:稍后我还希望数据库表更改时刷新数据透视表(手动调用该刷新)。
/ edit2:我也完全满意使用多个工作表作为数据透视表的源,只要它们在字段列表中单独出现。