python的hello word_Hello Word —— 使用Python读写Office文档之一
本系列文章将介绍如何使用Python读写主要Microsoft Office文档(Word,Excel和PowerPoint)
======================================================================================================================================
1. 操作Office文档的两种方法
本系列文章所指『Office文档』,特指Word文档、Excel工作簿和PowerPoint幻灯片。其他Office软件产生的文档不在讨论范围。
对一个Office文档进行读写,除了可以直接读写磁盘上的实质文件,还可以通过Office应用程序提供的COM接口进行。 COM接口相当于一个『官方中介』。而提供直接读写磁盘文件的库,相当于『小中介』。在Office 2003/2004以及以前,Office文档只采用微软私有的二进制格式,而这些私有格式直到2006年才公开于众。也就是说,小中介们以前都靠逆向工程以及各种猜测才实现了Office文档的读写。
时至今日,『官方中介』以及『小中介』都各有优劣。利用COM接口,优点在于能够使用到几乎Office所有的功能,并且由于COM的跨语言特性,知识迁移非常容易;缺点在于仅限于Windows + Office平台,操作系统和软件缺一不可。利用直接读写接口,优点在于跨平台,只要Python能够支持的平台基本上都可以,不需要Windows也不需要Office软件;缺点在于只能够使用一些基本的功能。
本系列文章只介绍如何使用直接读写接口操作Office文档。若想了解COM接口的使用,请参考pywin32的文档以及微软MSDN。
2. Hello Word!
下面的例子可以运行于任何平台(PC、Mac、树莓派……)。但是,如果想看到产生的文档,你还是需要一个能打开Office文档的应用。没有安装微软Office的话,其他替代软件比如AbiWord、OpenOffice、WPS之类的都可以。
首先安装python-docx这个Python库
$ pip install python-docx -U
(注意,在PyPi里还有一个叫docx的库,已经停止更新,不建议使用)
这个库依赖于lxml,在Windows下可能需要编译器。如果在安装python-docx过程中发现找不到编译器或者编译lxml错误的现象,可到 https://pypi.python.org/pypi/lxml/2.3/ 下载和安装预编译的版本。
只需要4行代码就可以创建一个Word文档:
from docx import Document
document = Document()
document.add_paragraph('Hello,Word!')
document.save('demo.docx')
第一行引入docx库和Document类。Document类即代表了『文档』,第二行创建了Document类的一个实例document,相当于『这篇文档』。紧接着,我们在文档中利用add_paragraph函数添加一个段落,段落的内容是Hello,Word!。最后,用save函数将文档保存在磁盘上。
运行这个脚本,就得到了文件demo.docx。用Office软件打开,看看里面的内容。
3. 插入图片
下面一个任务是在一个Word文档里添加255个圆圈,颜色为红色由浅入深。显然,这个任务在Word里人工完成是非常麻烦的。但用代码就非常简单了。
from docx import Document
from PIL import Image,ImageDraw
from io import BytesIO
document = Document() #新建文档
p = document.add_paragraph() #添加一个段落
r = p.add_run() #添加一个游程
img_size = 20
for x in range(255):
im = Image.new("RGB", (img_size,img_size), "white")
draw_obj = ImageDraw.Draw(im)
draw_obj.ellipse((0,0,img_size-1,img_size-1), fill=255-x)#画圆
fake_buf_file = BytesIO()#用BytesIO将图片保存在内存里,减少磁盘操作
im.save(fake_buf_file,"png")
r.add_picture(fake_buf_file)#在当前游程中插入图片
fake_buf_file.close()
document.save("demo.docx")
画图我们利用了常用的PIL库。这段代码还展示了所谓『游程』的概念,在接下来的篇章中将加以介绍。
致谢:
感谢wanghz49指出用BytesIO
python的hello word_Hello Word —— 使用Python读写Office文档之一相关推荐
- 如何在谷歌Chrome新版浏览器中打开并编辑Word/Excel/PPT等Office文档?(视频演示)
如何在谷歌Chrome新版浏览器中打开并编辑Word/Excel/PPT等Office文档?
- Vue 预览word,excel,ppt等office文档-内网访问(基于onlyoffice,后端返回文件流)
Vue 预览word,excel等office 先看效果!! 需求背景:在前端页面中预览office文件且是内网访问,服务器不可访问外网的前提. 因此微软的接口就废掉了,因为他接口的条件是可以访问外网 ...
- office文档管理服务器编辑,_卓正软件 - PageOffice官方网站 - 在线编辑Word、Excel的Office文档控件...
Office 组件 在线显示.编辑.保存Word文档 √ √ √ 在线显示.编辑.保存Excel文档 √ √ √ 在线显示.编辑.保存PowerPoint文档 √ √ √ 在线播放PowerPoint ...
- 前端实现pdf,word,doc等Office文档格式在线预览
在做一些后台管理或者h5页面的时候 通常会遇到Office文档格式的在线预览功能.虽然看似简单,里面却隐藏着很大的坑.简单是因为现在有各种插件可以下载实现,坑是因为涉及到一些兼容性和安全性等各种千奇百 ...
- python写word表格_使用表格—— 使用Python读写Office文档之三
本文介绍使用Python在Word中创建一个表格,以及读取表格中的数据. =============================================================== ...
- 双击word,excel等office文档很慢
解决方法: 选择[文件]菜单下的[选项]命令,打开[选项]对话框,选择[校准]选项,禁用[键入时检查拼写].[键入时检查语法]和[随拼写检查语法]选项. 删除C:\Documents and Sett ...
- java 转换word doc docx 等office文档 为pdf,无需破解 aspose ,无水印
我的目标:在浏览器页面上直接预览word,excel,pdf 等 为何会有该需求? 踩过的坑: 解决思路1: 用收费版的aspose或者 spire doc 转换后,再去除水印 优化完后的代码,`TO ...
- 原创Python图文详解,堪称「最强文档」还有自动化办公、爬虫pdf速下!
最近由我原创的 <Python最强-基础学习文档>,开始火爆整个 Python 圈,发布仅一周的时间,下载量将近破万 ! 为什么这么火?本文档共68页,将Python基础部分讲得细致入微! ...
- 自从学会Python后,无视百度文库VIP,所有文档免费下载阅读
最近要用到百度文库查资料,但是很多都需要付费VIP或者下载券,还不能复制,就有点苦逼! 还好小编会Python,在Python面前真的所有VIP都是小意思,啥视频网站,资料网站等等,统统无视收费机制! ...
最新文章
- 性别从后台获取得值的那点事儿
- 小米2s屏幕_米家空气净化器3VS小米空气净化器2 成熟设计的优势
- retinaface mnn
- VMware View 5.0 Ready! 资源汇总(持续更新)
- windows环境下封装条件wait和signal
- 通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩
- python 获取行列号两个数组相等_python – 寻找在numpy中找到两个相等长度数组之间精确重叠的最快方法...
- php全选按钮怎么写,PHP中的“全选”复选框,其中包含header.php
- UI标签库专题一:JEECG智能开发平台 BaseTag(样式表和JS引入标签)
- 信息学奥赛一本通(2038:【例5.5】最大数位置)
- fastclick select 闪退 bug
- SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决
- linux下启动应用程序,RedHat Linux 9下启动应用程序
- 统计学习方法读书笔记14-逻辑斯蒂回归代码实现与最大熵代码实现
- 存储容错:鱼与熊掌可以兼得
- Qt播放视频0x8007000e报错 DirectShowPlayerService::doPlay: Unresolved error code 0x8007000e
- php unpack 原理,unpack
- 一名大二废柴今后目标
- java文件下载错误提示_java文件下载出错
- JAVA语言编程练习--图形界面--简易登录界面