Python核心编程(第3版)
第1 部分 通用应用主题

第7章 *Microsoft Office编程

章节主张:Microsoft Office 编程章的核心是在既有软件生态中找杠杆,用 Python 去编排和自动化,而不是追求从零重做工具。

中文释读:现实流程里大量数据最终仍会落在 Excel、Word、PowerPoint、Outlook 中。Python 的价值经常不是替代,而是高效地连接、生成、批处理和复用。

章节知识路线

  1. 7.1 简介
  2. 7.2 使用Python进行COM客户端编程
  3. 7.3 入门示例
  4. 7.4 中级示例
  5. 7.5 相关模块/包

关键论点

  • COM 自动化体现了 Python 作为胶水层的优势。
  • 演示示例只是入口,真实价值在批处理与工作流串联。
  • 平台依赖需要被明确管理。

行动清单

  • 先梳理目标软件对象模型。
  • 脚本要考虑启动、保存、关闭和异常退出。
  • 把批量报表、模板填充和邮件发送沉淀成工具。

源章节深读

7.1 简介

解决的问题:这一节解决的是“7.1 简介在真实应用里到底扮演什么角色”。

把 7.1 简介 放回本章上下文,它更像是 结构化数据交换与系统边界 的一个具体落点。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 7.1 简介 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

7.2 使用Python进行COM客户端编程

解决的问题:这一节解决的是“7.2 使用Python进行COM客户端编程在真实应用里到底扮演什么角色”。

第 7 章 *Microsoft Office 编程 257 本章将与本书的大部分章节有所区别,不再关注网络开发、GUI、Web 或基于命令行的 应用,而是使用 Python 做一些完全不同的事情:通过组件对象模型(COM)客户端编程控 制专有软件,具体来说就是 Microsoft Office 应用。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 7.2 使用Python进行COM客户端编程 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

第 7 章 *Microsoft Office 编程 257 本章将与本书的大部分章节有所区别,不再关注网络开发、GUI、Web 或基于命令行的 应用,而是使用 Python 做一些完全不同的事情:通过组件对象模型(COM)客户端编程控 制专有软件,具体来说就是 Microsoft Office 应用。 7.1 简介 无论开发者是否喜欢,都无法否认他们生活在一个需要与基于 Windows 的 PC 进行交互 的世界里。 它可能只是间歇性出现的,也可能是你每天都必须处理的事情,不过无论你所面 对的出现频率如何,Python 总能够使我们的生活变得更简单。

7.3 入门示例

解决的问题:这一节解决的是“7.3 入门示例在真实应用里到底扮演什么角色”。

第 7 章 *Microsoft Office 编程 259 1.启动应用。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 7.3 入门示例 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

第 7 章 *Microsoft Office 编程 259 1.启动应用。 2.添加合适的文档以工作(或载入一个已经存在的文档)。 讨论就到这里,现在让我们看一些代码。

7.4 中级示例

解决的问题:这一节解决的是“7.4 中级示例在真实应用里到底扮演什么角色”。

266 第 1 部分 通用应用主题 7.4 中级示例 到目前为止,在本章中看到的例子都是用于让你对使用 Python 控制 Microsoft Office 产 品进行入门的。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 7.4 中级示例 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

266 第 1 部分 通用应用主题 7.4 中级示例 到目前为止,在本章中看到的例子都是用于让你对使用 Python 控制 Microsoft Office 产 品进行入门的。 现在让我们看几个在真实世界中有用的应用,其中的一些已经在我的日常工 作中进行了使用。 7.4.1 Excel 在本例中,我们将把本章所讲的内容与第 13 章的内容结合起来。

7.5 相关模块/包

解决的问题:这一节解决的是“7.5 相关模块/包在真实应用里到底扮演什么角色”。

把 7.5 相关模块/包 放回本章上下文,它更像是 结构化数据交换与系统边界 的一个具体落点。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 7.5 相关模块/包 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

7.6 练习

解决的问题:这一节解决的是“7.6 练习在真实应用里到底扮演什么角色”。

第 7 章 *Microsoft Office 编程 281 们可以共享相同的 COM 风格接口,该接口称为通用网络对象(UNO)。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 7.6 练习 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

第 7 章 *Microsoft Office 编程 281 们可以共享相同的 COM 风格接口,该接口称为通用网络对象(UNO)。 可以使用 PyUNO 模 块来驱动 OpenOffice 或 LibreOffice 应用处理文档,比如,编写 PDF 文件,转换 Microsoft Word 为 OpenDocument 文本(ODT)格式、HTML 等。 7.5 相关模块/包 Python Extensions for Windows http://pywin32.sf.net xlrd、xlwt(Python 3 版本可用) http://www.lexicon.net/sjmachin/xlrd.htm http://pypi.python.org/pypi/xlwt http://pypi.python.org/pypi/xlrd pyExcelerator http://sourceforge.net/projects/pyexcelerator/ PyUNO http://udk.openoffice.org/python/python-bridge.html 7.6 练习 7-1 Web 服务。

辨别题

什么时候 Office 自动化值得做,而不是直接人工操作?

本章图版学习路径

7.1 简介

Office 自动化入口