Есть ли способ закрыть диалоговое окно "Конфликты имен" перед открытием файла XLSX в C# в Excel 2007?
Я столкнулся с проблемой при открытии книги xlsx с помощью кода C#.
Проблема: при открытии xlsx появляется всплывающее окно, и пользователь ожидает его подтверждения.
Причина: причина популярности известна, так как это - известная проблема.
Возможное решение: необходимо автоматизировать и подавить это всплывающее окно, поэтому не требуется никакого ручного вмешательства.
Ссылка на одно из таких решений на VB: http://social.msdn.microsoft.com/Forums/office/en-US/546c7506-7146-45b6-873e-b3793df2979b/is-there-a-way-to-supress-name-conflicts-dialog-in-excel-2007?forum=exceldev
Вопрос к форуму:
Решение, упомянутое выше, основано на VB. Я нахожусь в поиске такого решения в C#.** И важно ** вопрос, как обнаружить такое всплывающее окно в коде.
Всплывающее окно отображается после вызова: Workbook.Open(.....). Также это не исключение и не возвращаемое значение.
Есть ли способ узнать такую популярность заранее, прежде чем открывать файл?
2 ответа
У меня та же проблема в рабочей книге, которая динамически заполняется через C# и фильтрует некоторые данные.
После того, как я выполнил этот код VBA:
On Error Resume Next
With Workbook("YourWokrbookName")
.Names("_FilterDatabase").Delete
.Names("Criteria").Delete
.Names("Extract").Delete
End With
On Error GoTo 0
Который я нашел здесь и приспособил для моего использования, я никогда не получал окно сообщения конфликта имен. Он просто удаляет объект _FilterDatabase на листе. Это может быть бесполезно в каждом случае, но в моем случае это не имело значения.
Ссылка показывает вам не код VB.NET, а его код VBA. Для этого кода вы уже должны открыть документ XLSX.
Но я не знаю, как найти его, прежде чем открыть документ.
Один путь, не очень хороший способ. Чтобы просмотреть файл xlsx (это zip-архив), найти место и удалить его. Вы можете попробовать использовать OpenXML SDK от Microsoft, чтобы удалить определенное имя.
Здесь вы найдете описание OpenXML SDK для Excel: http://msdn.microsoft.com/de-de/library/documentformat.openxml.spreadsheet(v=office.15).aspx
Надеюсь, это немного поможет!