paradocx
项目描述
paradocx 基于 openpack 提供的 Open Office XML 规范,为在 Office 2007 ‘docx’ 格式下处理 Microsoft Word 文档提供接口。
简介
使用 Paradocx 构建简单文档相对直接
>>> import paradocx
>>> doc = paradocx.Document()
>>> doc.paragraph('Things to do', style='Heading 1')
<Element {http://schemas.openxmlformats.org/wordprocessingml/2006/main}p at 0x22a1240>
>>> doc.paragraph('First, spend some time learning paradocx usage.')
<Element {http://schemas.openxmlformats.org/wordprocessingml/2006/main}p at 0x22a12d0>
>>> doc.paragraph('Then, put together some examples')
<Element {http://schemas.openxmlformats.org/wordprocessingml/2006/main}p at 0x22a1240>
>>> doc.paragraph('Finally, put those examples in the paradocx documentation')
<Element {http://schemas.openxmlformats.org/wordprocessingml/2006/main}p at 0x22a12d0>
>>> doc.save('mydoc.docx')
使用来自 Openpack 的 part-edit,可以看到构建的文档
> EDITOR=cat part-edit mydoc.docx/word/document.xml
<w:document xmlns:dcterms="http://purl.org/dc/terms/" xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<w:body>
<w:p>
<w:pPr>
<w:pStyle w:val="Heading 1"/>
</w:pPr>
<w:r>
<w:t>Things to do</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>First, spend some time learning paradocx usage.</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>Then, put together some examples</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>Finally, put those examples in the paradocx documentation</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
还可以向文档中添加表格
>>> import paradocx
>>> doc = paradocx.Document()
>>> doc.table([['a', 'b', 'c'], ['1', '2', '3']])
<Element {http://schemas.openxmlformats.org/wordprocessingml/2006/main}tbl at 0x2231240>
>>> doc.save('data.docx')
对象模型和高级用法
Word 文档的核心对象是 paradocx.package.WordPackage。所有涉及构建 Word 文档的操作都使用这种类的某种形式(paradocx.Document 子类继承自 WordPackage)。
请参阅 源代码 中使用示例。
每个 WordPackage 是多个相关部分的容器。这些部分代表文档的各个方面。以下示例是从实际使用中改编的,展示了如何从文件系统上的多个 XML 模板构建更复杂的结构
import string
def load_template(name, **params):
with open(name) as f:
template = string.Template(f.read())
return template.substitute(params)
doc = WordPackage()
doc.start_part.data = load_template('document.xml', text="Hello world")
# styles
styles = StylesPart(doc)
doc.add(styles)
styles.data = load_template('styles.xml')
doc.start_part.relate(styles)
title = "My initial document"
# Header for cover page
cover_header = HeaderPart(doc, '/word/cover-header.xml')
doc.add(cover_header)
cover_header.data = load_template('cover-header.xml', title=title)
doc.start_part.relate(cover_header, 'PmxHdr0')
# body header
header = HeaderPart(doc)
doc.add(header)
header.data = load_template('header.xml', title=title)
doc.start_part.relate(header, 'PmxHdr1')
# body footer
footer = FooterPart(doc)
doc.add(footer)
footer.data = load_template('footer.xml',
date=unicode(datetime.datetime.now()))
doc.start_part.relate(footer, 'PmxFtr1')
# image1
image1 = ImagePart(doc, '/word/media/logo.png')
doc.add(image1, override=False)
with open('my_logo.png', 'rb') as logo_data:
image1.data = logo_data.read()
doc.start_part.relate(image1, 'Logo1')
header.relate(image1, 'Logo1')
# cover page uses the logo, so relate it
cover_header.relate(image1, 'Logo1')
# settings
settings = SettingsPart(doc)
doc.add(settings)
settings.data = load_template('settings.xml')
doc.start_part.relate(settings)
doc.save(...)
有关构建底层部分的XML数据的更多详细信息,请考虑使用参考文档和OpenPack工具来检查文档中必要的元素,或者阅读以下资源:微软开发者中心的一些资源或了解围绕Office Open XML开发的标准。
测试
Paradocx使用tox运行测试。要测试,只需在仓库上调用tox。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源分发
paradocx-1.5.0.tar.gz (28.9 kB 查看散列)
构建分发
paradocx-1.5.0-py3-none-any.whl (10.6 kB 查看散列)