Python操作Excel教程(图文教程,超详细)Python xlwings模块详解,
「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》
xlwings模块详解
- 1、快速入门
- 1、打开Excel
- 2、创建工作簿
- 2.1、使用工作簿
- 2.2、操作工作簿
- 3、创建工作表
- 3.1、使用工作表
- 3.2、操作工作表
- 3.3、删除工作表
- 4、读写单元格
- 4.1、选择单元格
- 4.2、写入数据到单元格
- 4.3、读取单元格的数据
- 4.4、设置单元格样式
- 4.4、删除单元格
xlwings 是用来「处理Excel」的Python第三方库,开源免费,一直在更新。
使用前需要「下载」、安装 xlwings 模块
【File】-【Settings】-【Progect:xxx】-【Python Interpreter】
然后「导入模块」,as是别名,方便后续调用
import xlwings as xw
在 xlwings 中
- App:表示Excel程序
- Book:表示工作簿
- Sheet:表示工作表
- Range:表示单元格
1、快速入门
import xlwings as xw# 1、打开Excel程序,处理过程可观
with xw.App(visible=True) as app:# 2、选择使用的工作簿book = app.books[0]# 3、选择使用的工作表sheet = book.sheets[0]# 4、选择单元格范围,设置背景颜色sheet.range('A1').color = '#ff0000'# 向单元格写入数据sheet.range('A2').value = 'hello Excel'# 5、保存工作簿book.save('myExcel.xlsx')
预期:文件保存到当前目录,打开后看到我们写入的内容。
1、打开Excel
使用 App() 打开Excel程序,一个App对应一个Excel实例。
为了防止僵尸进程,建议这样「启动」Excel( with 搭建上下文,会「自动释放」资源,无需手动close)
import xlwings as xwwith xw.App(visible=True) as app:print(app)
输出:
<App [excel] 5276>
提示:
- 桌面下方的任务栏会有Excel的程序一闪而过,这是因为 with 会自动关闭Excel;
- 如果
visible=False
,则任务栏看不到变化(程序不可见); - 如果直接用
xw.App()
的方式打开Excel,则会在桌面打开Excel,并且不会关闭。 app.activate()
:活动Excel,将Excel程序放到桌面最前方。focus=True
表示将鼠标焦点移动到Excel。
实例
import xlwings as xwwith xw.App(visible=True) as app:app.activate(True)
预期:Excel显示在桌面最前方(一闪而过)。
2、创建工作簿
在Excel中,「新建」一个工作簿,并返回工作簿对象Book,有三种创建方式:
xw.Book()
xw.books.add()
app.books.add()
实例
import xlwings as xwwith xw.App(visible=True) as app:print('自带一个工作簿:', app.books[0])book2 = xw.Book()print(book2)book3 = xw.books.add()print(book3)book4 = app.books.add()print(book4)print(app.books)
输出:
自带一个工作簿: <Book [工作簿1]>
<Book [工作簿2]>
<Book [工作簿3]>
<Book [工作簿4]>
Books([<Book [工作簿1]>, <Book [工作簿2]>, <Book [工作簿3]>, ...])
2.1、使用工作簿
1)「使用」指定的工作簿,根据工作簿的名字
/索引
/序号
,并返回工作簿对象,有五种方式。
注意:()
根据 序号
选择,从1开始;[]
根据 索引
选择,从0开始。
- app.books (
序号
) - app.books [
索引
] - xw.books [
索引
] - xw.books (
序号
) - xw.Book (
名字
)
实例
import xlwings as xwwith xw.App(visible=True) as app:print(app.books)print(app.books(1))print(app.books[0])print(xw.books[0])print(xw.books(1))print(xw.Book('工作簿1'))
输出:
Books([<Book [工作簿1]>])
<Book [工作簿1]>
<Book [工作簿1]>
<Book [工作簿1]>
<Book [工作簿1]>
<Book [工作簿1]>
2)使用指定的工作簿,根据「文件路径」(用r字符串包裹路径),有三种方式
- xw.Book(
路径
) - xw.books.open(
路径
) - app.books.open(
路径
)
实例
import xlwings as xwwith xw.App(visible=True) as app:print(xw.Book(r'E:\test.xlsx'))print(xw.books.open(r'E:\test.xlsx'))print(app.books.open(r'E:\test.xlsx'))print(app.books)
输出:
<Book [test.xlsx]>
<Book [test.xlsx]>
<Book [test.xlsx]>
Books([<Book [工作簿1]>, <Book [test.xlsx]>])
2.2、操作工作簿
book.name
:返回工作簿的名字book.sheets
:返回工作簿的所有sheet页(列表)book.app
:返回工作簿所在的App对象(Excel程序)
实例
import xlwings as xwwith xw.App(visible=True) as app:book = app.books[0]print(book.name)print(book.sheets)print(book.app, app)print(book.selection)
输出:
工作簿1
Sheets([<Sheet [工作簿1]Sheet1>])
<App [excel] 18392> <App [excel] 18392>
<Range [工作簿1]Sheet1!$A$1>
book.save()
:保存工作簿,如果不指定路径,则保存到当前路径。
语法
book.save( path, password )
参数
- path :(可选)文件保存路径
- password :(可选)文件打开密码
实例
import xlwings as xwwith xw.App(visible=True) as app:book = app.books[0]book.save(r'E:/test1.xlsx', 123456)
预期:文件保存到E盘,打开需要「输入密码」。
book.to_pdf()
:导出PDF,如果不指定路径,则保存到当前路径。
注意:Excel必须有「内容」,才能导出PDF,否则会报错
语法
book.to_pdf( path, include, exclude, show )
参数
- path :(可选)PDF文件保存路径,默认当前目录
- include :(可选)包含哪些工作表,单个工作表名 或 多个工作表名的列表
- exclude :(可选)不包含哪些工作表,单个工作表名 或 多个工作表名的列表
- show :(可选)创建后使用默认应用打开PDF,默认值False
实例
import xlwings as xwwith xw.App(visible=True) as app:book = app.books[0]book.sheets[0]['A1'].value = 'text'book.to_pdf(show=True)
预期:PDF文件保存到当前目录下,并「自动打开」。
3、创建工作表
使用工作簿对象 Book ,「创建」工作表,返回工作表对象 Sheet ,一个 Sheet 对应一个工作表,有两种创建方式:
app.books[0].sheets.add()
xw.books[0].sheets.add()
创建工作表时,可以「设置表名」。参数2中, after 表示插入到某个表后面, before 表示插入到某个表前面。
app.books[0].sheets.add('name1')
xw.books[0].sheets.add('name2')
实例
import xlwings as xwwith xw.App(visible=True) as app:app.books[0].sheets.add('name1')xw.books[0].sheets.add()print('所有工作表:', app.books[0].sheets)
输出:
所有工作表: Sheets([<Sheet [工作簿1]Sheet3>, <Sheet [工作簿1]name1>, <Sheet [工作簿1]Sheet1>])
3.1、使用工作表
通过工作簿对象 Book ,「使用」指定的工作表,根据工作表的名字
/索引
/序号
,并返回工作表对象 Sheet ,有六种方式:
app.books[0].sheets[0]
app.books[0].sheets(1)
app.books[0].sheets['Sheet1']
xw.books[0].sheets[0]
xw.books[0].sheets(1)
xw.books[0].sheets['Sheet1']
注意:()
根据 序号
选择,从1开始;[]
根据 索引
选择,从0开始。
实例
import xlwings as xwwith xw.App(visible=True) as app:book = app.books[0]print(book.sheets[0])print(book.sheets(1))print(book.sheets['Sheet1'])wb = xw.books[0]print(wb.sheets[0])print(wb.sheets(1))print(wb.sheets['Sheet1'])print('工作表列表:', book.sheets)
输出:
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
工作表列表: Sheets([<Sheet [工作簿1]Sheet1>])
3.2、操作工作表
1)工作表名
app.books[0].sheets[0].name = 'sheetName'
:设置工作表名app.books[0].sheets[0].name
:获取工作表名app.books[0].sheets[0].book
:获取工作表所属的工作簿app.books[0].sheets[0].index
:获取工作表的索引(从1开始)
2)行高列宽
app.books[0].sheets[0].autofit()
:自适应行高列宽app.books[0].sheets[0].autofit(axis='rows')
:自适应行高app.books[0].sheets[0].autofit(axis='columns')
:自适应列宽
3)导出工作表(不指定路径,默认保存到当前目录)
app.books[0].sheets[0].to_html()
:导出 HTMLapp.books[0].sheets[0].to_pdf()
:导出 PDF(内容不能为空)
4)复制工作表
app.books[0].sheets('sheetName').copy()
:复制工作表为副本- name:(可选,str)副本的名字
- before:(可选,sheet对象)复制到哪个工作表之前
- after:(可选,sheet对象)复制到哪个工作表之后
3.3、删除工作表
app.books[0].sheets[0].clear_contents()
:删除文本但保留样式app.books[0].sheets[0].clear_formats()
:删除样式但保留文本app.books[0].sheets[0].clear()
:删除文本和样式app.books[0].sheets[0].delete()
:删除工作表
4、读写单元格
单元格不需要创建,选中单元格「范围」,然后读写即可,一个 Range 对应一个单元格。
4.1、选择单元格
按照范围、位置,选择单元格,并返回单元格对象,有多种方式。
1)按照A1表示法(例:选中A1到B3范围的单元格)
sheet.range('A1')
sheet.range('A1:B2')
2)按照坐标位置,坐标从左上角起始
sheet.range(1, 1)
sheet.range((1, 1), (3, 4))
3)切片方式选择范围
sheet['A1']
sheet['A1:B2']
sheet[0, 0]
sheet[0:1, 0:4]
4)按照单元格名字
sheet.range('a1_name')
实例
import xlwings as xwwith xw.App(visible=True) as app:book = app.books[0]sheet = book.sheets[0]range1 = sheet.range('A1')print(range1)range2 = sheet.range('A1:B2')print(range2)range3 = sheet.range(1, 1)print(range3)range4 = sheet.range((1, 1), (3, 4))print(range4)print(sheet['A1'])print(sheet['A1:B2'])print(sheet[0, 0])print(sheet[0:1, 0:4])
输出:
<Range [工作簿1]Sheet1!$A$1>
<Range [工作簿1]Sheet1!$A$1:$B$2>
<Range [工作簿1]Sheet1!$A$1>
<Range [工作簿1]Sheet1!$A$1:$D$3>
<Range [工作簿1]Sheet1!$A$1>
<Range [工作簿1]Sheet1!$A$1:$B$2>
<Range [工作簿1]Sheet1!$A$1>
<Range [工作簿1]Sheet1!$A$1:$D$1>
4.2、写入数据到单元格
向指定单元格中写入数据,数据可以是单个值
、一维列表
、二维列表
sheet.range('A1').value = 'hello Excel'
sheet.range('A2').value = [1, 2, 3]
sheet.range('A3').value = [[11, 22], [33, 44]]
写入效果参见下图
提示:已经有数据的单元格,再次写入,会覆盖原来的数据,常用来修改单元格数据。
4.3、读取单元格的数据
按照A1表示法,读取指定范围内单元格的数据,读出的数据可以是单个数据
、列表
、二维列表
形式。
sheet.range('A1').value
sheet.range('A2:C2').value
sheet.range('A3:B4').value
我们将上一步写入的数据读出来,输出结果如下:
hello Excel
[1.0, 2.0, 3.0]
[[11.0, 22.0], [33.0, 44.0]]
4.4、设置单元格样式
1)背景颜色
sheet.range('A1:A2').color = '#FF0000'
:按照颜色代码设置颜色sheet.range('B1').color = (255, 255, 0)
:按照颜色坐标设置颜色sheet.range('A2').color = None
:去除背景颜色sheet.range('A2').color is None
:判断背景颜色是否为空sheet.range('B1').color
:获取背景颜色
2)行高列宽
sheet.range('A1').row_height
:获取行高sheet.range('A1').column_width
:获取列宽sheet.range('A1').row_height = 20
:设置行高sheet.range('A1').column_width = 20
:设置列宽sheet.range('A1').rows.autofit()
:自适应行高sheet.range('A1').columns.autofit()
:自适应列宽sheet.range('A1').autofit()
:自适应行高列宽
3)合并单元格
sheet.range('A1:C1').merge()
:合并单元格sheet.range('B1:C1').unmerge()
:取消合并sheet.range('A1').merge_area
:返回指定单元格的合并范围,如果没有合并,就返回单元格本身sheet.range('A1').merge_cells
:判断是否包含合并单元格(True包含;False不包含)
4)函数公式
sheet.range('D1').formula = '=SUM(A1:C1)'
:设置函数公式sheet.range('D1').formula
:获取函数公式
5)单元格名字
sheet.range('A1').name = 'a1_name'
:设置单元格名字sheet.range('A1').name
:获取单元格名字
6)复制粘贴
sheet.range('A1').copy()
:将单元格的内容复制到剪贴板sheet.range('A2').paste()
:将剪贴板的内容复制到单元格
4.4、删除单元格
删除指定范围的单元格、数据、样式
sheet.range('A1').clear_contents()
:删除数据但保留样式sheet.range('A2').clear_formats()
:删除样式但保留数据sheet.range('A3').clear()
:删除数据和样式sheet.range('A1').delete()
:删除单元格
相关文章:

Python操作Excel教程(图文教程,超详细)Python xlwings模块详解,
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 xlwings模块详解 1、快速入门1、打开Excel2、创建工作簿2.1、使用工作簿2.2、操作…...
Java入门
Java导入包 import 主要用于导入在使用类前准备好了Import 关键字可以多次使用,导入多个包Import 关键字可以多次使用,导入多个类如果同一个包中需要大量的类,那么可以使用通配符进行导入如果Import了不同包,相同名称的类&#x…...

深度解析BERT:从理论到Pytorch实战
本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。 关注TechLead&#x…...

小程序数据导出文件
小程序josn数据生成excel文件 先从下载传送门将xlsx.mini.min.js拷贝下来,新建xlsx.js文件放入小程序项目文件夹下。 const XLSX require(./xlsx)//在需要用的页面中引入// 定义导出 Excel 报表的方法exportData() {const that thislet newData [{time:2021,val…...
hadoop1.2.1伪分布式搭建
0.使用host-only方式 将Windows上的虚拟网卡改成跟Linux上的网卡在同一网段 注意:一定要将widonws上的WMnet1的IP设置和你的虚拟机在同一网段,但是IP不能相同 1.Linux环境配置(windows下面的防火墙也要关闭) 1.1修改主…...

【校招VIP】前端JavaScript语言之跨域
考点介绍: 什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是前端校招的一个重要考点,在面试过程中经常遇到,需要着重掌握。本期分享的前端算法考点之…...
mysql调优小计
1.选择最合适的字段属性:类型、⻓度、是否允许NULL等;尽量把字段设为not null,⼀⾯查询时对⽐是否为null; 2.要尽量避免全表扫描,⾸先应考虑在 where 及 order by 涉及的列上建⽴索引。 3.应尽量避免在 where ⼦句中对…...

AI:04-基于机器学习的蘑菇分类
蘑菇是一类广泛分布的真菌,其中许多种类具有重要的食用和药用价值,但也存在着一些有毒蘑菇。因此,准确地区分可食用和有毒的蘑菇对于保障人们的食品安全和健康至关重要。本研究旨在基于机器学习技术开发一种蘑菇分类系统,以实现对蘑菇的自动分类和识别。通过构建合适的数据…...
算法——排序
排序 下面的代码会用到宏定义,因为再C中没有swap交换函数,所以对于swap的宏定义代码如下: #define swap(a, b) {\__typeof(a) __a a; a b; b __a;\ } 稳定排序: 1.插入排序: 插入排序会将数组,分位两个部…...

leetCode动态规划“不同路径II”
迷宫问题是比较经典的算法问题,一般可以用动态规划、回溯等方法进行解题,这道题目是我昨晚不同路径这道题趁热打铁继续做的,思路与原题差不多,只是有需要注意细节的地方,那么话不多说,直接上coding和解析&a…...

100天精通Python(可视化篇)——第99天:Pyecharts绘制多种炫酷K线图参数说明+代码实战
文章目录 专栏导读一、K线图介绍1. 说明2. 应用场景 二、配置说明三、K线图实战1. 普通k线图2. 添加辅助线3. k线图鼠标缩放4. 添加数据缩放滑块5. K线周期图表 书籍推荐 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专…...

哈希表与有序表
哈希表与有序表 Set结构 key Map结构 key-value 哈希表 哈希表的时间复杂度都是常数项级别的,但常数较大 增删改查的时间都是常数级别的,与数据量无关 当哈希表存储的值是基础数据类型(Integer - int),哈希表中内…...
什么时候使用RPA?如何使用RPA?需要什么样的硬件支持?需要安装哪些软件?
RPA(Robotic Process Automation)是一种用于自动化执行重复性任务的技术,它可以帮助企业提高工作效率,降低人力成本,并减少人为错误。RPA适用于各种行业和场景,例如财务、人力资源、客户服务、IT运维等。 …...

R语言入门——line和lines的区别
目录 0 引言一、 line()二、 lines() 0 引言 首先,从直观上看,lines比line多了一个s,但它们还是有很大的区别的,下面将具体解释这个两个函数的区别。 一、 line() 从R语言的帮助文档中找到,line()的使用,…...

C语言:static关键字的使用
1.static修饰局部变量 这是static关键字使用最多的情况。我们知道局部变量是在程序运行阶段在栈上创建的,但是static修饰的局部变量是在程序编译阶段在代码段(静态区)创建的。所以在static修饰的变量所在函数执行结束后该变量依然存在。 //…...
AUTOSAR知识点 之 ECUM (三):ECUM的ISOLAR-AB配置及代码解析
目录 1、概述 2、ISOLAR-AB配置 2.1、EcuMGeneral 2.2、EcuMConfiguration 2.2.1、EcuMDefaultShutdownTarget 2.2.2、EcuMDriverInitListOne...

2023年MySQL-8.0.34保姆级安装教程
重点放前面:演示环境为windows环境。 MySQL社区版本安装教程如下: 一、MySQL安装包下载二、安装配置设置三、配置环境变量 大体分为3个步骤:①安装包的下载;②安装配置设置;③配置环境变量 一、MySQL安装包下载 下载官…...

ElasticSearch入门
一、基本命令_cat 1、查看节点信息 http://192.168.101.132:9200/_cat/nodes2、查看健康状况 http://192.168.101.132:9200/_cat/health3、查看主节点的信息 http://192.168.101.132:9200/_cat/master4、查看所有索引 http://192.168.101.132:9200/_cat/indices二、索引一…...
RocketMQ的Broker
1 Broker角色 Broker角色分为ASYNC_MASTER (异步主机)、SYNC_MASTER (同步主机)以及SLAVE (从机)。如果对消息的可靠性要求比较严格,可以采用SYNC_MASTER加SLAV E的部署方式。如果对消息可靠性要求不高,可以采用ASYNC_MASTER加ASL AVE的部署方式。如果只…...

使用Puppeteer进行游戏数据可视化
导语 Puppeteer是一个基于Node.js的库,可以用来控制Chrome或Chromium浏览器,实现网页操作、截图、测试、爬虫等功能。本文将介绍如何使用Puppeteer进行游戏数据的爬取和可视化,以《英雄联盟》为例。 概述 《英雄联盟》是一款由Riot Games开…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...

VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...