C# Word Interop Сохранение документов с помощью пакета совместимости Word 2003 +
На моем компьютере разработчика у меня установлен Office 2007 на Win7 x64.
Целевыми машинами являются пакет обеспечения совместимости Office 2003 + (для чтения / записи документов и т. Д.), Работающий на WinXP x64.
Моя программа, среди прочего, открывает / сохраняет как команды для файлов doc, преобразовывая их в docx.
Он прекрасно работает на моей машине, но, к сожалению, дает файлы нулевого размера на целевых машинах. Не выдается никаких исключений, похоже, что все работает нормально, за исключением случаев, когда я смотрю на выходной файл, он имеет нулевую длину.
Есть идеи, почему это происходит, и как обойти это?
В крайнем случае я бы написал некрасивый макрос Word/PowerPoint, который открывает документ и сохраняет его. Я бы предпочел, чтобы все происходило автоматически из моей программы без открытия окна Word/PowerPoint.
2 ответа
Нет необходимости автоматизировать Word, который довольно медленный и ломкий из-за всплывающих сообщений. Возможно, вы захотите взглянуть на Microsoft Office File Converter (ofc.exe), который, однако, имеет излишне сложный пользовательский интерфейс.
Самый простой и быстрый способ - легко конвертировать из.doc в.docx, используя следующую команду:
"C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme <input file> <output file>
где <входной файл> и <выходной файл> должны быть полными путями.
Команду можно легко применить к нескольким документам, используя for
:
for %F in (*.doc) do "C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme "%F" "%Fx"
Вы можете запустить эту команду из C#, используя Process.Start
метод.
Вы уверены, что SAVE или SAVEAS, которые вы используете, задают правильные параметры для принудительного сохранения файла в формате DOCX? В версии 2007 она встроена, а в версии 2003, я полагаю, вам нужно указать формат сохранения другим способом, явно указав ему использовать соответствующий фильтр из пакета совместимости.