У меня есть приложение на C #, которое редактирует книги Excel. Один из процессов включает в себя удаление подключений запросов Excel из книги.
foreach (WorkbookConnection conn in ExcelWorkbook.Connections)
conn.Delete();
Приведенный выше код удаляет соединения, но определения запросов остаются в рабочей книге. Есть ли способ полностью отключить таблицу от запроса (сохранив фактическую таблицу в рабочей книге)?
Этот код VBA делает именно то, что я пытаюсь сделать:
Workbook.Queries(i).Delete
Но я не могу найти ничего похожего, используя C # Interop.
* EDIT:
Вот мой последний код (адаптированный из кода Микева в ответе ниже - все еще не работает):
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();
}
}
}