C # Word Interop Сохранение документов с помощью пакета совместимости Word 2003 + - PullRequest
0 голосов
/ 08 апреля 2011

На моем компьютере разработчика у меня установлен Office 2007 на Win7 x64.

Целевыми машинами являются Office 2003 + пакет совместимости (для чтения / записи docx и т. Д.), Работающий на WinXP x64.

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

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

Есть идеи, почему это происходит, и как обойти это?

Моим последним средством будет написать некрасивый макрос Word / PowerPoint, который открывает документ и сохраняет его.Я бы предпочел, чтобы все происходило автоматически из моей программы без открытия окна Word / PowerPoint.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Нет необходимости автоматизировать 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.

0 голосов
/ 08 апреля 2011

Вы уверены, что SAVE или SAVEAS, которые вы используете, задают правильные параметры для принудительного сохранения файла в формате DOCX?В версии 2007 он встроен, но в версии 2003, я полагаю, вам нужно указать формат сохранения другим способом, явно указав ему использовать соответствующий фильтр из пакета совместимости.

...