Сохранить файл слова как html в java

Я пытаюсь сохранить файл слова как html, используя java. Я сохраняю файл слова как xml, и он работает для меня

Runtime rt1 = Runtime.getRuntime();
rt1.exec("C:/Program Files/Microsoft Office/Office12/WINWORD.EXE /msaveasxml C:/myfolder/AB_00040.doc");

Он сохраняет мой файл документа в виде файла xml в определенной папке C:/myfolder, и я просматриваю этот файл xml в C:/myfolder/AB_00040.xml.

Если я хочу сохранить тот же файл, что и html, что я могу сделать. Любая помощь

rt1.exec("C:/Program Files/Microsoft Office/Office12/WINWORD.EXE /msaveas??? C:/myfolder/AB_00040.doc");

заранее спасибо


person Dineshkani    schedule 07.12.2012    source источник
comment
Я думаю, что это больше вопрос о MS Word, чем о java. Вы пробовали msaveashtml?   -  person Anurag Kapur    schedule 07.12.2012
comment
Это может вам помочь...office.microsoft.com/en-us/word-help/   -  person Zack Macomber    schedule 07.12.2012
comment
Это тоже...support.microsoft.com/kb/210565   -  person Zack Macomber    schedule 07.12.2012
comment
@AnuragKapur да, я пытаюсь, но это не сработает   -  person Dineshkani    schedule 07.12.2012
comment
Вам нужно создать макрос — для этого используется /m. В вашем AB_00040.doc есть макрос, который называется saveasxml. Создайте в документе еще один файл с именем saveashtml, после чего вы сможете использовать /msaveashtml. Проверьте ссылки, которые я разместил, и это даст вам дальнейшее руководство   -  person Zack Macomber    schedule 07.12.2012
comment
В качестве альтернативы, вместо того, чтобы пытаться автоматизировать Word, вы можете использовать docx4j. Однако может потребоваться автоматизация Word, если в ваших документах используются эзотерические функции.   -  person JasonPlutext    schedule 08.12.2012
comment
@ZackMacomber спасибо за вашу помощь, я пытаюсь использовать макрос для этой функции.   -  person Dineshkani    schedule 08.12.2012


Ответы (1)


Я нашел ответ с подсказкой Зака ​​Макомбера, я использую макрос для преобразования файла слова в файл html. Я даю кодировку этого макроса. Сохраните имя макроса как «saveashtml».

Sub saveashtml()
Dim xmlname As String
xmlname = ActiveDocument.FullName
xmlname = Replace(xmlname, ".docx", ".html", , , vbTextCompare)
xmlname = Replace(xmlname, ".doc", ".html", , , vbTextCompare)
ActiveDocument.SaveAs FileName:=xmlname, FileFormat:=wdFormatHTML, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False
Application.Quit
End sub

Вы можете выполнить этот макрос,

Runtime rt1 = Runtime.getRuntime();
rt1.exec("C:/Program Files/Microsoft Office/Office12/WINWORD.EXE /msaveashtml C:/myfolder/AB_00040.doc");

кодирование макроса saveasxml

Sub saveasxml()
Dim xmlname As String
xmlname = ActiveDocument.FullName
xmlname = Replace(xmlname, ".docx", ".xml", , , vbTextCompare)
xmlname = Replace(xmlname, ".doc", ".xml", , , vbTextCompare)
ActiveDocument.SaveAs FileName:=xmlname, FileFormat:=wdFormatFlatXML, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False
End Sub
person Dineshkani    schedule 10.12.2012
comment
Я использую ваше решение в веб-приложении, где пользователь загружает текстовый документ в клиент, и я вызываю winword с макросом для преобразования в html на стороне сервера. Но есть проблема с этим подходом. Если документ Word поврежден или доступен только для чтения и т. д., и когда сервер запускает команду winword, появляется запрос winword, например, документ поврежден, все еще хотите открыть?, документ доступен только для чтения, хотите открыть? и т. д. и навсегда зависает в памяти, потому что winword ожидает ввода пользователя, а программа не может предоставить этот ввод. Знаете ли вы какое-либо решение этого? - person Fayaz; 24.01.2017
comment
используйте ahk или pywinauto или найдите функции pyautogui - person Smart Manoj; 06.05.2018