2016-04-11 4 views
0

Мы пытаемся использовать MS Interop Excel на Windows Server и использовать его через WCF (я не могу объяснить это более подробно, потому что я действительно не понимаю его полностью, извините). ,Microsoft Encop Excel SaveCopyAs с версией xlsx

Мы используем метод SaveCopyAs для сохранения сгенерированных файлов excel в каталоге temp, затем читаем его в байтовый массив и отправляем его как ответ.

Однако в клиентском приложении после сохранения его в файл с расширением xlsx и попробуйте открыть его. Excel дает нам предупреждение о том, что файл поврежден, но после того, как мы вручную изменили имя файла на xls, он работает отлично.

После краткого исследования кажется, что офис просто сохраняет его как своего рода более старую версию файла (?). Таким образом, одним из решений является использование метода SaveAs с действительными параметрами, но это вызывает у нас массу проблем, поэтому мы предпочитаем придерживаться SaveCopyAs.

Есть ли какие-либо решения для сохранения такого файла в более новом формате без метода SaveAs?

(И вы, наверное, уже поняли это сейчас, это System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC исключение.)

+2

Я вижу три возможности: 1. Создайте исходный файл Excel в новом формате. 2. Попросите клиента сохранить файл с расширением xls. 3. Используйте SaveAs() и устраните проблемы, которые у вас есть. – NineBerry

+0

Ошибка выполнения 1004 имеет много причин, близкое совпадение - http://stackoverflow.com/questions/9751622/run-time-error-1004-for-saving-excel-file-vba-required –

+0

Более новые версии Office/Excel требуется, чтобы формат файла соответствовал расширению файла. Это мера безопасности. Поэтому, если вы добавите расширение xlsx в файл в старом формате (xls), вы получите предупреждение - это по дизайну. Другой вариант - не автоматизировать приложение Excel в серверной среде (которая в любом случае не поддерживается) и работать напрямую с форматом файлов Office Open XML. –

ответ

0

Источником всех бед у нас был наш сотрудник отвечает за обслуживание серверов, которые без проверки сказали, что есть офис 2013 установлен но на самом деле это 2003.

Смежные вопросы