Удаление запросов из книги Excel с помощью C # Excel Interop - PullRequest
0 голосов
/ 25 января 2019

У меня есть приложение на 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();
                }
            }
        }

1 Ответ

0 голосов
/ 25 января 2019
for (int i = 1; i <= workbook.Sheets.Count; i++)
{
    sheet = (Worksheet)workbook.Sheets.get_Item(i);   
    if (sheet.ListObjects.Count > 0)
    {
       foreach (ListObject obj in sheet.ListObjects)
       {
          obj.QueryTable.Delete();
       }
    }
}

Кредиты: здесь !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...