Excel Interop удаляет изображения из обработанных файлов.
Я использую Excel Interop, сторонние компоненты отсутствуют (о чем я знаю).Рабочий процесс - создать копию (цель) файла (шаблона), заполнить ячейки, изменить состояние переключателя
- Создать копию (цель) существующего файла .xslm (шаблон))
- Открыть цель через Excel Interop
- Заполнить ячейки цели, изменить состояние переключателя
- Рабочий лист с изображением не изменен
- Закрыть цель
На моем компьютере разработчика целевой файл выглядит великолепно - все заполнено, изображение присутствует. Примечание: на моем компьютере разработчика я запускаю код из IDE VS2010.
На рабочем компьютере - все заполнено, но изображение отсутствует.Вместо этого на его месте появляется следующая ошибка: Примечание: на производственном компьютере она работает как служба с учетной записью Local Service .
"Изображениедеталь с идентификатором связи rId1 не найдена в файле "
Вся рабочая книга открывается с помощью следующего кода:
var workbook = workbooks.Open(targetPath
0, false, 5, Type.Missing, Type.Missing, false, XlPlatform.xlWindows, "",
true, false, 0, true, false, false);
Обратите внимание, что рабочая таблица с изображением неманипулировать в коде.
Рабочие книги (и отдельные рабочие листы) защищены.Однако защищенный шаблон правильно обрабатывается в dev, но не в рабочей среде.Я не думаю, что защита имеет к этому какое-либо отношение (но кто знает, верно? Это Interop. Тьфу).
Файл был создан другой стороной и всеми компонентами (то есть изображением)находиться в структуре .xslm, а не как ссылки на другой сервер.
Я проверил, что изображение видно на рабочем компьютере в файле шаблона, но не в обработанном файле.
Чтобы подтвердить, что это не было проблемой при открытии файла в рабочей среде, я отправил себе по электронной почте копию, а изображение продолжало отсутствовать.
Я также подтвердил, что на моей машине для разработки обрабатывались файлыу меня есть видимое изображение.
Я снял защиту с листа и распаковал структуру файла.Файл .jpg действительно отсутствует в обработанном целевом объекте с рабочей машины.
Еще одно замечание - Office 2010 установлен на моей машине для разработки, но Office 2007 на рабочей машине.В результате я использую Office 12 Interop.В обеих средах ошибки времени выполнения не генерируются.
Я использую Interop (вместо библиотеки OpenXml), потому что есть элементы управления ActiveX, которые необходимо заполнить.Обратите внимание, что ни у одного из элементов управления ActiveX нет проблем - они работают нормально.Это просто файлы изображений, которые исчезают из обработанных файлов (они хорошо отображаются в файле шаблона).
ОБНОВЛЕНИЕ ПРИМЕЧАНИЕ: Есть четыре других файла изображений, все .emf
на другом листе;все они тоже раздеты.