PyQt4:如何用python读取带有格式设置的.doc文件

3 投票
1 回答
1275 浏览
提问于 2025-04-18 02:00

我想把QTextEdit里面的所有文字,包括加粗、字体大小和字体颜色,保存到一个.doc文件里,然后再以相同的格式读取回来。我不知道该怎么做到这一点。请告诉我如何读取一个.doc格式的文件。我现在使用的代码是:

def loadFile(self, fileName):
    file = QtCore.QFile(fileName)
    if not file.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text):
        QtGui.QMessageBox.warning(self, "Ajgar Writer",
                "Cannot read file %s:\n%s." % (fileName, file.errorString()))
        return False

    instr = QtCore.QTextStream(file)
    QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)
    self.setPlainText(instr.readAll())
    QtGui.QApplication.restoreOverrideCursor()

    self.setCurrentFile(fileName)

    self.document().contentsChanged.connect(self.documentWasModified)

    return True

1 个回答

2

你不能用Qt来读取或写入.doc文件,因为这是微软Office的专有文档格式。你能选择的只有文本/html(可以读写)或者pdf/odf(只能写)。所以如果你想在读取和写入时保留格式,html其实是唯一可行的选择。

要把html内容读入一个QTextEdit,你只需这样做:

    # self.setPlainText(instr.readAll())
    self.setHtml(instr.readAll())

而要写入html,你可以这样做:

    outstr << self.toHtml()

或者使用一个QTextDocumentWriter

    writer = QtGui.QTextDocumentWriter(path, 'HTML')
    if not writer.write(self.document()):
        print('ERROR:', writer.device().errorString())

撰写回答