【问题标题】:Formatted output in OpenOffice/Microsoft Word with Python使用 Python 在 OpenOffice/Microsoft Word 中格式化输出
【发布时间】:2010-10-29 14:06:32
【问题描述】:
我正在开发一个需要格式化、可编辑输出的项目(使用 Python)。由于最终用户不会精通技术,因此输出需要采用文字处理器可编辑格式。格式很复杂(要点、段落、粗体等)。
有没有办法使用 Python 生成这样的报告?我觉得应该有一种方法可以使用 Microsoft Word/OpenOffice 模板和 Python 来做到这一点,但我找不到任何足够先进的东西来获得良好的格式。有什么建议吗?
【问题讨论】:
标签:
python
formatting
ms-word
ms-office
openoffice.org
【解决方案2】:
我已经使用 xlwt 使用 python 创建 Excel 文档,但我还不需要编写 word 文件。我找到了这个包,OOoPy,但我没用过。
您也可能想尝试输出 html 文件并让用户在 Word 中打开它们。
【解决方案3】:
我认为 OpenOffice 有一些 Python 绑定 - 您应该能够用 Python 编写 OO 宏。
但我会改用 HTML - Word 和 OO.org 非常擅长编辑它,您可以轻松地用 Python 编写它(尽管 Word 节省了很多麻烦,这可能会使您的 Python 应用程序解析它变得复杂)。
【解决方案4】:
" 格式复杂(要点、段落、粗体等),"
使用RST。
生成起来很简单,因为它是纯文本。
编辑起来很简单,因为它是带有几个额外字符的纯文本来提供结构信息。
它使用一堆tools 很好地格式化。
【解决方案5】:
一个鲜为人知且略显邪恶的事实:如果您创建一个 HTML 文件,并在其上添加 .doc 扩展名,Word 会将其作为 Word 文档打开,而大多数用户都不会更聪明。
除非可能有技术含量很高的人会说,我这是一个小的 Word 文件! :)
【解决方案7】:
您可以在PyQt4 中使用QTextDocument、QTextCursor 和QTextDocumentWriter。显示如何写入 odt 文件的简单示例:
>>>from pyqt4 import QtGui
# Create a document object
>>>doc = QtGui.QTextDocument()
# Create a cursor pointing to the beginning of the document
>>>cursor = QtGui.QTextCursor(doc)
# Insert some text
>>>cursor.insertText('Hello world')
# Create a writer to save the document
>>>writer = QtGui.QTextDocumentWriter()
>>>writer.supportedDocumentFormats()
[PyQt4.QtCore.QByteArray(b'HTML'), PyQt4.QtCore.QByteArray(b'ODF'), PyQt4.QtCore.QByteArray(b'plaintext')]
>>>odf_format = writer.supportedDocumentFormats()[1]
>>>writer.setFormat(odf_format)
>>>writer.setFileName('hello_world.odt')
>>>writer.write(doc) # Return True if successful
True
QTextCursor 还可以插入表格、框架、块、图像。更多信息请访问:
http://qt-project.org/doc/qt-4.8/qtextcursor.html
另外,您还可以使用 QPrinter 打印到 pdf 文件。