使用 Python 以编程方式将 DOCX 转换为 HTML

问题描述 投票:0回答:1

我已经在 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/。但是,我发现他们忽略了一些样式,我想自己编写代码而不是使用库。

非常感谢任何帮助。

python python-docx
1个回答
3
投票

这里通过 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()
© www.soinside.com 2019 - 2024. All rights reserved.