利用python中的win32com模块操作Word、Excel文件
word操作
doc文件转换为docx文件
安装win32com模块:pip3 install pypiwin32
import os
from win32com.client import Dispatch, DispatchEx, constants def doc_to_docx(f_path):
w = Dispatch('Word.Application')
# w = DispatchEx('Word.Application') # 启动独立进程
w.Visible = 0 # 后台运行
w.DisplayAlerts = 0 # 不警告 # 打开文件
doc = w.Documents.Open(f_path) # 新建docx类型文件
new_path = os.path.splitext(f_path)[0] + '.docx' '''
word_doc = w.Documents.Add() # 创建新的文档 # 插入文字
myRange = doc.Range(0,0)
myRange.InsertBefore('Hello python!') # 使用样式
wordSel = myRange.Select()
wordSel.Style = constants.wdStyleHeading1
'''
# 保存
doc.SaveAs(new_path, 16, False, "", True, "", False, False, False, False) # 参数1、2必须传,如果文档有密码保护则需要传第四个参数,参数2可以是12,或者16,或其他适合的类型,其余参数都是默认值,不传也可以 # 关闭退出
doc.Close()
w.Quit() # 删除源文件
os.remove(f_path)
return new_path doc_to_docx(r"C:\Users\Desktop\新建 Microsoft Word 文档.doc")
安装模块python-docx:pip3 install python-docx
往Word文档中插入图片,并设置宽度
from docx import Document def insert_img():
msg = '插入图片'
image1 = r"C:\Users\Pictures\Camera Roll\1.jpg"
image2 = r"C:\Users\Pictures\Saved Pictures\IMG_20180214_113145.jpg" # 保存在本地的图片 # 实例化对象
doc = Document()
doc.add_paragraph(msg) # 添加文字
doc.add_picture(image1, width=Inches(3)) # 添加图, 设置宽度
doc.add_picture(image2, width=Inches(5)) doc.save(r"C:\Users\rongg\Desktop\word_添加图片.docx") # 保存路径
Excel操作
注:只能操作已经存在的Excel表格,不存在会报错
from win32com.client import Dispatch def excel_write(f_path, data, pwd=123):
excel_app = Dispatch('Excel.Application')
excel_app.Visible = 0 # 后台运行
excel_app.DisplayAlerts = 0 # 禁止弹窗 # 打开Excel文件, 有密码时前三个参数必须传
xl_handle = excel_app.Workbooks.Open(f_path, UpdateLinks=3, ReadOnly=False, Format=None, Password=pwd) # 指定sheet页
sheet1 = xl_handle.Worksheets('Sheet1')
for i in range(len(data)):
for j in range(len(data[0])):
sheet1.Cells(i + 1, j + 1).Value = data[i][j]
print('done!') # 选择单元格
range_obj = sheet1.Range('A2')
range_obj.EntireRow.Insert() # 在选择的单元格前插入行 # 设置边框
'''
5 双点虚线
6 加粗点虚线
7 单实线
8 点虚线
9 双实线
10 单点虚线
'''
range_obj.Borders.LineStyle = 7 # 为单元格赋值
sheet1.Cells(8, 1).Value = 'Hello'
sheet1.Cells(8, 2).Value = 'Excel' # 关闭退出
xl_handle.Close(True) # True 必须传入,否则不会保存
excel_app.Quit() excel_write(
r"C:\Users\Desktop\新建 Microsoft Excel 工作表.xlsx",
[['name', 'age', 'gender'], ['jack', 22, 'man'], ['bob', 18, 'man'], ['alice', 19, 'woman']]
)
执行后的结果如下:

后续更新。。。。
利用python中的win32com模块操作Word、Excel文件的更多相关文章
- 善于利用python中的os模块
作为一个程序猿,平时善于利用python中的os模块进行路径等操作,会省去很多麻烦,下面总结一下我平时经常用到的方法: import os os.getcwd() # 获取当前文件所在的目录 os.p ...
- 利用python中的gensim模块训练和测试word2vec
word2vec的基础知识介绍参考上一篇博客和列举的参考资料. 首先利用安装gensim模块,相关依赖如下,注意版本要一致: Python >= 2.7 (tested with version ...
- 浅析Python中的struct模块
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
- 【转】浅析Python中的struct模块
[转]浅析Python中的struct模块 最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概 ...
- Python中的单元测试模块Unittest快速入门
前言 为什么需要单元测试? 如果没有单元测试,我们会遇到这种情况:已有的健康运行的代码在经过改动之后,我们无法得知改动之后是否引入了Bug.如果有单元测试的话,只要单元测试全部通过,我们就可以保证没有 ...
- python中的StringIO模块
python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...
- python中的select模块
介绍: Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqu ...
- Python中的re模块--正则表达式
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...
- python中的shutil模块
目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
随机推荐
- 一些JVM指令
1.jps:查看本机java进程信息. 2 .jstack:打印线程的栈信息,制作线程dump文件. 3.jmap:打印内存映射,制作堆dump文件 4.jstat:性能监控工具 5.jhat:内存分 ...
- 096_mulesoft with salesforce _01
https://docs.mulesoft.com/mule-runtime/3.5/connect-with-salesforce-example https://www.youtube.com/w ...
- linux忘记密码-进入单用户模式修改密码
1.重启系统 重启可以使用命令 reboot.init 6.shutdown -r now 或点击VMware-虚拟机-电源-重新启动客户机 2.进入GRUB界面 重启后,在启动界面按上下方向键选择第 ...
- Android 切换wifi小记
我手机是Android 7.1的魅族.相关网络权限注册之后,还有一个特别的权限就是<uses-permission android:name="android.permission.A ...
- 使用Libusb测试USB device
一. 先准备好测试工具 -- Libusb: 在Linux中使用的话: 首先从 http://www.libusb.org/官网中下载libusb 然后解压之后./configure --> m ...
- Java8 Date Time API 简介
1.Java8 Date Time API 简介 1.1.新旧 Date Time API 对比 包位置对比 1.Java8之前的日期.时间分布在java.util和java.sql的包中,此外用于格 ...
- (四)用go实现红黑树
本篇文章我们用go来实现红黑树,部分参考资料如下: https://www.cnblogs.com/skywang12345/p/3245399.html#!comments https://blog ...
- 用 go 实现多线程下载器
本篇文章我们用Go实现一个简单的多线程下载器. 1.多线程下载原理 通过判断下载文件链接返回头信息中的 Accept-Ranges 字段,如果为 bytes 则表示支持断点续传. 然后在请求头中设置 ...
- (0724) 格雷码 verilog
https://blog.csdn.net/gordon_77/article/details/79489548 assign gray_value = (binary_value >> ...
- ServiceEntry与WorkloadEntry
ServiceEntry: 用于将未能自动添加至网格中的服务,以手形式使得内发 现机制能够访问或路由到这些服务.网格外部的服务 运行于 Kubernetes 上,但却非为 Istio 网格 ...