【发布时间】:2019-01-25 16:22:26
【问题描述】:
我有一个编辑 Excel 工作簿的 C# 应用程序。其中一个过程涉及从工作簿中删除 Excel 查询连接。
foreach (WorkbookConnection conn in ExcelWorkbook.Connections)
conn.Delete();
以上代码删除了连接,但查询定义仍保留在工作簿中。有没有办法完全断开表与查询的连接(同时将实际表保留在工作簿中)?
这个 VBA 代码完全符合我的要求:
Workbook.Queries(i).Delete
但我似乎找不到任何使用 C# Interop 的等效项。
*编辑:
这是我最新的代码(改编自 Mikev 在下面的答案中的代码 - 仍然无法正常工作):
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(@"MyWorkbook.xlsx");
ExcelApp.Visible = true;
for (int i = 1; i <= ExcelWorkbook.Sheets.Count; i++)
{
Worksheet sheet = (Worksheet)ExcelWorkbook.Sheets.get_Item(i);
if (sheet.ListObjects.Count > 0)
{
foreach (ListObject obj in sheet.ListObjects)
{
obj.QueryTable.Delete();
}
}
}
【问题讨论】:
-
我认为您只需要复制表格并粘贴特殊值即可。工作表中有一个隐藏的查询。我通常选择整个工作表并进行复制和粘贴。
标签: c# excel-interop