>>> from env_helper import info; info()
页面更新时间: 2024-04-04 19:47:16
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

2.1. DOCX 文档格式介绍

办公软件中电子文档的格式有很多。最常用的就是微软 Word 软件支持的 DOC / DOCX 格式的文档。其他还有 OpenOffice 的 ODT 文件格式,以及 RTF 富文本文件格式,以及诸多其他软件支持的文件格式。

在这些文件格式中, DOCX 文件格式由于其应用的广泛性以及格式的开放性得到了 Python 最好的支持。所以这一章只针对 Python 对 DOCX 格式的读写与处理进行说明。

2.1.1. DOCX 文档的组成

DOCX 是微软 Word 的文件扩展名,Microsoft Office2007之后版本使用, 其基于Office Open XML标准的压缩文件格式取代了其以前专有的默认文件格式, 在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。 任何能够打开DOC文件的文字处理软件都可以将该文档转换为DOCX文件, docx文件比doc文件所占用空间更小,是一个ZIP文件。

DOCX 文件是一个压缩文件,解压后有一个 [Content_Types].xml 和包含其他信息的 _rels , customXml , docProps , word 文件夹, 主要文字内容保存为 XML 格式, 其中的 document.xml 文件则包含了文档的主要文本内容,

在解压后的文件夹内,包含了文档的所有内容,主要包括:

[Content_Types].xml

每个包都必须有一个 [Content Types].xml ,位于包的根目录下。 此文件包含包中部件的所有内容类型的列表。每个部件及其类型都必须列在 [Content_Types].xml 中。

_rels 文件夹

每个包都包含一个关系部分,它定义了其他部分之间的关系以及与包外部资源的关系。 这将关系从内容中分离出来,并且可以在不更改引用目标的源的情况下轻松地更改关系。

  • media 插入的图片

  • theme 文件夹

  • xml 文字、格式、信息等。

2.1.2. DOCX 文档格式的特点

  • 开放文档格式

在信息技术领域,开源、开放、共享已经得到越来越多的认可。 微软 Word 软件支持的 DOC 文档格式得到了广泛的应用, 但是其专有文档格式也受到诸多诟病; DOCX 是微软推出的开放文档格式,也对外表现了其支持开源、开放的态度。 新的格式更容易在各个平台被解析。

  • docx文件比doc文件所占用空间更小。

docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。

  • 易修复

二进制文档一旦损坏很难修复,XML 格式比较健壮,损坏后容易修复。

  • 安全性更强

优化了加密。

2.1.3. Docx 文档中的对象

DOCX 主档的组成部分可以主要分为以下的几个类别:

  • 文件对象

  • 与样式相关的对象

  • 文字相关对象

  • 表对象

  • 块对象

  • 与形状相关对象

  • DrawingML对象

在所有 Office 应用程序中,Microsoft Word 可能是应用最广泛的应用程序, 它还经常在自定义 Office 解决方案中扮演重要的角色。 开发人员用各种不同的方式使用 Word,有一些方式很简单,而另一些极其复杂。

在 Word 中,几乎所有的操作都要调用 Document 对象本身或其内容。 当您用 VBA 操作 Word 时,Document 对象表示一个打开的文档,而且所有的 Document 对象都是 Application 对象的 Documents 集合的成员。

文档是一个由字符、单词、句子和段落组成的集合,字符组成单词,单词组成句子,句子组成段落,等等。因此,每一个 Document 对象都具有 Characters、Words、Sentences 和 Paragraghs 四个集合。此外,每个文档具有一个包含一个或多个节的 Sections 集合,每一个节都有一个包含该节页眉和页脚的 HeadersFooters 集合。

2.1.4. Python处理DOCX的模块

目前已经出现了很多使用Python处理的Docx文档的库,他们的性能和功能都很优异,常用的库有以下几个:

``python-docx`` 模块

在 DOCX 文档中,主要有以下几种组成部分:

  • 标题

  • Page_break

  • 段落

  • 图片

  • 节( Section )

  • 表格

另外,还有样式对象。

进一步地,还有作者、创建日期、修改时间等文档的属性。

Open XML格式提供了与每个文档一起维护的一组描述性属性。其中之一是核心文件属性。核心属性是所有Open XML格式所共有的,并出现在文档,演示文稿和电子表格文件中。核心文档属性中的“核心”指的是 Dublin Core,元数据标准定义了一组核心元素来描述资源。

``Random-Word`` 模块

``python-docx-template`` 模块

除了上面的模块,还可以使用 pywin32(仅限于Windows) 模块来调用 Word 软件进行文档处理。

新技术的更新迭代是非常快的,可能过一段时间就出现的更为好用的库,但是使用以上的库依然可以帮助你解决大多数的问题。