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 查看散列)