帕拉多克斯

paradocx的Python项目详细描述


https://img.shields.io/pypi/v/paradocx.svghttps://img.shields.io/pypi/pyversions/paradocx.svghttps://img.shields.io/travis/yougov/paradocx/master.svghttps://readthedocs.org/projects/paradocx/badge/?version=latest

状态

paradocx基于openpack提供给 提供在中使用Microsoft Word文档的接口 Office 2007“docx”格式。

paradocx为YouGov plc版权所有(c)2010。

简介

使用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中的部分编辑, 可以看到构建的文档:

> 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)。

the source 一个简单的用法示例。

每个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工具进行检查 必要元素的文档,或者考虑阅读 位于Microsoft Dev Center的资源 或者阅读standards developed around Office Open XML

测试

Paradocx使用tox作为 正在运行测试。要进行测试,只需在repo上调用tox

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Eclipse中设置Java路径,以便在外部驱动器上运行它?   在windows上使用Java服务包装器GUI与桌面交互   java是与此字符序列不匹配的正则表达式   java无法使用kafka管理客户端API创建具有所需分区的kafka主题   java基于单个单元格值获取整个excel行   当使用Spring的构造函数注入时,java bean是否在构造函数中完全初始化?   java重置LineNumberReader的计数器   将字符串从Java文件传递到jQuery   安卓在来自不同Java类文件的活动中祝酒   java在使用mvvm时如何在zk中更新progressmeter   使用regex获取由“”Java包围的值   使用tester类的java猜谜游戏   api响应的java POJO,其密钥为“”   java正则表达式,用于匹配长度大于n的字母和数字字符串?   java如何使用Json保存和恢复RecyclerView项的位置   在Java中用字符代码替换字符串   Jenkins中的java PermGen错误   java swing panel问题   boolean在Java中,false如何可能等于true   java如何使用Servlet从HTML表单中检索“分组”项?