我已经在 Python 中实现了 HTML 到 DOCX,我已经使用 BeautifulSoup 解析了 HTML。我递归地遍历了每一个 HTML 标签,然后通过使用 Python-Docx 库,我创建了 Docx 文档。
现在我想做相反的事情并将 Docx 转换为 HTML 字符串。我阅读了有关使用 Python Docx 库 (https://python-docx.readthedocs.io/en/latest/user/documents.html) 阅读现有文档的信息。但是,我找不到遍历每个文档对象并将它们转换为 HTML 字符串的方法。
有什么办法可以进行这种反向解析吗?我试过图书馆https://pypi.org/project/docx2html/和https://pypi.org/project/mammoth/。但是,我发现他们忽略了一些样式,我想自己编写代码而不是使用库。
非常感谢任何帮助。
这里通过 Windows COM (OLE) MS Office 接口将 DOCX 转换为 HTML 的解决方案:
import win32com.client
import win32com.client.dynamic
class WordSaveFormat:
wdFormatNone = None
wdFormatHTML = 8
class WordOle:
def __init__(self, filename):
self.filename = filename
self.word_app = win32com.client.dynamic.Dispatch("Word.Application")
self.word_doc = self.word_app.Documents.Open(filename)
def save(self, new_filename=None, word_save_format=WordSaveFormat.wdFormatNone):
if new_filename:
self.filename = new_filename
self.word_doc.SaveAs(new_filename, word_save_format)
else:
self.word_doc.Save()
def close(self):
self.word_doc.Close(SaveChanges=0)
# self.word_app.DoClose( SaveChanges = 0 )
# self.word_app.Close()
del self.word_app
def show(self):
self.word_app.Visible = 1
def hide(self):
self.word_app.Visible = 0
word_ole = WordOle("D:\\TestDoc.docx")
word_ole.show()
word_ole.save("D:\\TestDoc.html", WordSaveFormat.wdFormatHTML)
# word_ole.save( "D:\\TestDoc2.docx", WordSaveFormat.wdFormatNone )
word_ole.close()