删除Excel 2007工作簿中的所有QueryTables

使用Excel Interop,我试图遍历所有工作表中的所有QueryTable并删除它们。 我有这个代码,这是有效的:

> // loop through each Worksheet > for (int i = 1; i <= workbook.Sheets.Count; i++) > { > sheet = (Worksheet)workbook.Sheets.get_Item(i); > > // loop through each queryTable on each Worksheet > int queryTableCount = sheet.QueryTables.Count; > for (int j = 1; j <= queryTableCount; j++) { > sheet.QueryTables.Item(1).Delete(); > } > } 

这对一些数据连接/文件工作得很好,但对于其他人来说,“QueryTables.Count”返回零 – 即使我知道有连接。 连接是在Excel 2007中通过“数据”选项卡 – >“从其他源” – “从Microsoft Query中创build的。 有没有人遇到这个问题?

我想出了这个问题,感谢这个职位。 事实certificate,Excel Interop在2003和2007版Excel中处理查询表的方式不同。 2007年使用ListObjects ,所以使用相同的代码循环通过每个工作表,如上所示,但然后使用:

 // loop through each list object on each Worksheet if (sheet.ListObjects.Count > 0) { foreach (ListObject obj in sheet.ListObjects) { obj.QueryTable.Delete(); } }