Python之Xlwings操作excel

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、xlwings简介
  • 二、安装与使用
    • 1.安装
    • 2.使用
    • 3.xlwings结构说明
  • 二、xlwings对App常见的操作
    • App基础操作
    • 工作簿的基础操作
    • 工作表的基础操作
      • 工作表其他操作
    • 读取单元格的基础操作
      • Range其他操作
    • 写入单元格的基础操作
    • 写入一行或一列Excel数据(函数式)

一、xlwings简介

python操作Excel的模块,python中能操作Excel的库,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl等,一共九个库
在这里插入图片描述
所以我综合了一下就打算用xlwings
他的特点:

  1. xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
  2. 可以和matplotlib以及pandas无缝连接
  3. 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
  4. 开源免费,一直在更新

二、安装与使用

1.安装

pip install xlwings

中文使用文档说明:https://www.kancloud.cn/gnefnuy/xlwings-docs/1127450

2.使用

app=xw.App()
wb=app.books.open(r'文件地址') # 这里的r指的是不转义特殊字符
# 1.打开Excel
app=xw.App(visible=True,add_book=False)
# visible是否可见,False表示在后台运行,add_book是否新增一张Excel操作,在新增wb上运行
# 2.对excel操作时候屏幕是否更新
app.screen_updating=True   #默认True
# 3.返回所有book对象集合
print(app.books)    #只返回通过xw打开的workbook,手动打开的不返回
# 4.退出excel
app.kill()  #终止进程
app.quit()  #退出excel程序

3.xlwings结构说明

根据我们写的代码也可以看出
excel基本结构分为 Application ——> Workbooks ——> Worksheets ——> Range
即应用程序 ——> 工作簿 ——> 工作表 ——> 单元格。
在这里插入图片描述
其他的没什么不好理解的(如果用过excel)这里的range的含义其实指的是范围也称为区域,(你所需要进行操作的范围)比如a1到f1这样

二、xlwings对App常见的操作

App基础操作

import xlwings as xwapp = xw.App(visible=True, add_book=False)
app.display_alerts = False    # 关闭一些提示信息,可以加快运行速度。 默认为 True。
app.screen_updating = True    # 更新显示工作表的内容。默认为 True。关闭它也可以提升运行速度。
wb = app.books.add()
sht = wb.sheets.active

工作簿的基础操作

 wb = app.books.add()                   # 新建工作簿。wb = app.books.open(r'file_path')      # 打开现有的工作簿wb = app.books.active                  # 获取当前活动的工作簿

工作表的基础操作

sht = wb.sheets.active                 # 获取当前活动的工作表
sht = wb.sheets[0]                     # 按索引获取工作表
sht = wb.sheets['Sheet1']              # 按表名获取工作表
sht1 = wb.sheets.add()                 # 新建工作表,默认新建的放在最前面。
sht1 = wb.sheets.add('新建工作表', after=sht)   # 新建工作表,放在sht工作表后面。

工作表其他操作

app=xw.App()
wb=app.books.open(r'C:\Users\Administrator\Desktop\1test.xlsm')
sht=wb.sheets[0]
1.sheets返回所有的工作表
print(wb.sheets)
2.active返回正在被操作的sht,
sht=wb.sheets[0]
print(sht.activate)
3.add(name=None,before=None,after=None)添加sht
wb.sheets.add(name='hello_xlwings')
4.autofit(axis=None)自动调整行和列
栗子
import xlwings as xw
wb=xw.Book()
wb.sheets[0].range('a1').value='hello xlwings'  #对第一张表a1赋值
wb.sheets[0].autofit('c')   #columns=c
wb.sheets[0].autofit('r')   #rows=r
wb.sheets[0].autofit()
5.book sht所属的workbook
sht=wb.sheets[0]
print(sht.book) #属于workbook<Book [1test.xlsm]>
6.cells返回一个range对象,表示sheet上的所有单元格
print(sht.cells)
print(sht.cells.shape)
7.charts返回sheet中所有图标的集合
print(sht.charts)
8.clear()
print(sht.clear())  #清除内容颜色格式...
9.clear_contents()
print(sht.clear_contents()) #清除内容
10.delete() 删除sheet
sht.delete()
11.pictures 返回所有pictures对象的集合
print(sht.pictures)
12.index 返回工作表的索引
print(sht.index)    #第一个为1
13.name,sheet name的操作
print(sht.name) #获得sht的名字
sht.name='xlwingstest'  #修改sht的名字
print(sht.name)

读取单元格的基础操作

cell1 = sht.range('cell1')
# 获取 cell1 中的值
v = cell1.value
# 也可以根据行列号读取
cell1_value = sht.range(3,2).value
# 读取一段区间内的值
a1_c4_value = sht.range('a1:c4').options(ndim=2).value       # 加上 option 读取二维的数据
a1_c4_value = sht.range((1,1),(4,3)).options(ndim=2).value   # 和上面读取的内容一样。

Range其他操作

app=xw.App()
wb=app.books.open(r'C:\Users\Administrator\Desktop\1test.xlsm')
sht=wb.sheets[0]
1.add_hyperlink(address,text_to_display=None,screen_tip=None)添加超链接
sht.range('a1').add_hyperlink(address='www.baidu.com',text_to_display='百度',screen_tip='我是百度哦')
2.clear()删除range里面的内容和格式
3.clear_contents()删除内容
4.color获取单元格的背景颜色
print(sht.range('a1').color)    #没有颜色的时候返回None
sht.range('a1').color=(100,100,100)   #设置颜色
print(sht.range('a1').color)
5.column返回range的列
6.column_width获取单元格的列宽
print(sht.range('a1').column_width)  #获取宽度
sht.range('a1').column_width=33 #设置宽度
print(sht.range('a1').column_width)
7.columns返回RangeColumns对象,表示指定范围内的列
print(sht.range('a1:c3').columns)
8.count返回单元格数量
9.end(direction),返回一个range对象,类似Ctrl+Up(down,left,right)
print(sht.range('a1:a65536').end('down').row)   #返回最后有值一行
10.formula 获取设置单元格的公式
sht.range('a1').formula='=b1+c1'    #设置
# print(sht.range('a1').formula)  #获取
11.formula_array 获取设置单元格的数组公式
sht.range('a1').formula_array='=b1+c1'    #设置
print(sht.range('a1').formula_array)  #获取的值并没有{}包裹
12.get_address(row_absolute=True,column_absolute=True,include_sheetname=False,external=False)返回地址
13.height返回高度 row_height
print(sht.range('a1').height) #获取行高
sht.range('a1').row_height=33   #设置行高
print(sht.range('a1').row_height)   #获取行高
14.hyperlink返回地址
15.last_cell返回指定range右下角的单元格
16.left返回从第一列到range第一列的距离
17.name设置获取range的名称
18.number_format获取设置range的内容格式
19.offset(row_offset=0,column_offset=0)
rng=sht.range('a1:c3')
rng=rng.offset(row_offset=2,column_offset=2)
print(rng)  #返回偏移后的array c3:e5
20.options(convert=None,)...
21.raw_value获取设置传递的值
22.row返回行
23.row_height 在上方height的时候已经举栗子
24.rows返回rangerows
25.select()
26.shape返回几行几列
27.size返回range中元素数量
print(sht.range('a1:d100').size)    #有400个cell
28.top返回第一行到range第一行的距离
29.value获取设置range的值
sht.range('a1').value='123'
print(sht.range('a1').value)# 引用当前活动工作表的单元格
rng=xw.Range('A1')
# 加入超链接
# rng.add_hyperlink(r\'www.baidu.com\',\'百度\',‘提示:点击即链接到百度\')
# 取得当前range的地址
rng.address
rng.get_address()
# 清除range的内容
rng.clear_contents()
# 清除格式和内容
rng.clear()
# 取得range的背景色,以元组形式返回RGB值
rng.color
# 设置range的颜色
rng.color=(255,255,255)
# 清除range的背景色
rng.color=None
# 获得range的第一列列标
rng.column
# 返回range中单元格的数据
rng.count
# 返回current_region
rng.current_region
# 返回ctrl + 方向
rng.end('down')
# 获取公式或者输入公式
rng.formula='=SUM(B1:B5)'
# 数组公式
rng.formula_array
# 获得单元格的绝对地址
rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False)
# 获得列宽
rng.column_width
# 返回range的总宽度
rng.width
# 获得range的超链接
rng.hyperlink
# 获得range中右下角最后一个单元格
rng.last_cell
# range平移
rng.offset(row_offset=0,column_offset=0)
#range进行resize改变range的大小
rng.resize(row_size=None,column_size=None)
# range的第一行行标
rng.row
# 行的高度,所有行一样高返回行高,不一样返回None
rng.row_height
# 返回range的总高度
rng.height
# 返回range的行数和列数
rng.shape
# 返回range所在的sheet
rng.sheet
#返回range的所有行
rng.rows
# range的第一行
rng.rows[0]
# range的总行数
rng.rows.count
# 返回range的所有列
rng.columns
# 返回range的第一列
rng.columns[0]
# 返回range的列数
rng.columns.count
# 所有range的大小自适应
rng.autofit()
# 所有列宽度自适应
rng.columns.autofit()
# 所有行宽度自适应
rng.rows.autofit()

写入单元格的基础操作

一维

sht.range(3,2).value = ='welcome'
sht.range('A1').value=[1,2,3]
# 将A1,B1,C1单元格的值存入list1列表中
list1=sht.range('A1:C1').value
# 将1,2,3分别写入了A1,A2,A3单元格中
sht.range('A1').options(transpose=True).value=[1,2,3]
# 将A1,A2,A3单元格中值存入list1列表中
list1=sht.range('A1:A3').value

二维

# 将a1,a2,a3输入第一列,b1,b2,b3输入第二列
list1=[['a1','a2','a3'],['b1','b2','b3']]
sht.range('A1').value=list1

在这里插入图片描述

写入一行或一列Excel数据(函数式)

import xlwings as xw
def write_col(io, sheet, col='A1', data=None):"""一次写多列注意点:此方法所需的data参数必须是list嵌套,如:[[1, 9], [2, 8], [3, 7], [4, 6]],并且里面的每个list的长度必须一致写入一列数据:param io: Excel文件:param sheet: sheet,int或者str类型:param col: 哪一列,如:'A1':param data: 要写入的数据,list类型:return:"""wb = xw.Book(io)if isinstance(sheet, str):sht = wb.sheets(sheet)else:sht = wb.sheets[sheet]sht.range(col).options(transpose=True).value = datawb.save()wb.app.quit()def write_row(io, sheet, row=\'A1\', data=None):"""写入一行数据一次写多行注意点:此方法所需的data参数必须是list嵌套,如:[[1, 2], [3, 4], [5, 6]],并且里面的每个list的长度必须一致:param io: Excel文件:param sheet: sheet,int或者str类型:param row: 哪一行,如:'A1':param data: 要写入的数据,list类型:return:"""wb = xw.Book(io)if isinstance(sheet, str):sht = wb.sheets(sheet)else:sht = wb.sheets[sheet]sht.range(row).value = datawb.save()wb.app.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/76904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MOV导出序列帧并在Unity中播放

MOV导出序列帧并在Unity中播放 前言项目将MOV变成序列帧使用TexturePacker打成一个图集将Json格式精灵表转换为tpsheet格式精灵表导入Unity并播放总结 鸣谢 前言 收集到一批还不错的MG动画&#xff0c;想要在Unity中当特效播放出来&#xff0c;那首先就得把MOV变成序列帧&…

堆排序与TopK问题

一、堆排序 堆排序(升序)&#xff1a;堆排序的思想就是先用数组模拟建大堆&#xff0c;然后把根结点与最后一个结点值交换&#xff0c;最后一个结点的值就是最大值&#xff0c;然后再把前(n-1)个元素重新建大堆&#xff0c;然后根结点与最后一个结点值交换&#xff0c;就找出了…

小红书笔记爬虫

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

LNMP架构搭建论坛

目录 一、LNMP简介&#xff1a; 二、LNMP搭建&#xff1a; 1.前提准备&#xff1a; 关闭防火墙和安全机制&#xff1a; 2.编译安装nginx&#xff1a; 3.编译安装mysql&#xff1a; 3.1 安装依赖环境&#xff1a; 3.2 创建mysql运行用户&#xff1a; 3.3 编译安装&#xff1a…

c语言练习题52:写一个函数判断当前机器是大端还是小端

代码&#xff1a; #include<stdio.h> int check_sys() {int a 1;return *(char*)&a;//小端retrun 1 大端return 0&#xff1b; } int main() {if (check_sys() 1) {printf("小端\n");}elseprintf("大端\n"); } 这里首先取a的地址&#xff0c…

原型链(一定要搞懂啊!!!>-<)

一、概念 1、prototype 习惯称作“显示原型”&#xff0c;只有构造函数才有的属性。 2、构造函数 能用new关键字创建的对象叫做构造函数 3、__proto__ 习惯称作“隐式原型”&#xff0c;每一个实例都有的属性&#xff0c;该属性指向他构造函数的“显示原型”。Function对象…

2.14 PE结构:地址之间的转换

在可执行文件PE文件结构中&#xff0c;通常我们需要用到地址转换相关知识&#xff0c;PE文件针对地址的规范有三种&#xff0c;其中就包括了VA&#xff0c;RVA&#xff0c;FOA三种&#xff0c;这三种该地址之间的灵活转换也是非常有用的&#xff0c;本节将介绍这些地址范围如何…

Mac端交互式原型设计 Axure RP 8 for Mac汉化

Axure RP 8是一款专业的交互原型设计工具&#xff0c;它被广泛应用于用户体验设计、界面设计和产品原型制作等领域。该软件提供了丰富的功能和工具&#xff0c;使用户能够创建出具有高度交互性和可视化效果的原型。 Axure RP 8的主要特点和功能包括&#xff1a; 1. 快速原型&a…

产教融合 | 力软联合重庆科技学院开展低代码应用开发培训

近日&#xff0c;力软与重庆科技学院联合推出了为期两周的低代码应用开发培训课程&#xff0c;来自重庆科技学院相关专业的近百名师生参加了此次培训。 融合研学与实践&#xff0c;方能成为当代数字英才。本次培训全程采用线下模式&#xff0c;以“力软低代码平台”为软件开发…

光谱通用款积分球

随着惯性约束聚变&#xff08;ICF&#xff09;物理理论的不断发展以及精密物理实验要求的不断提高&#xff0c;激光驱动器的光束路数急剧增多&#xff0c;光路长度和元器件数目成倍增长。模块化是新一代激光驱动器的发展趋势。对于高功率激光多参数测量系统&#xff0c;模块化设…

《DevOps实践指南》- 读书笔记(五)

DevOps实践指南 Part 4 第二步 &#xff1a;反馈的技术实践14. 建立能发现并解决问题的遥测系统14.1 建设集中式监控架构14.2 建立生产环境的应用程序日志遥测14.3 使用遥测指导问题的解决14.4 将建立生产遥测融入日常工作14.5 建立自助访问的遥测和信息辐射器14.6 发现和填补遥…

【视觉SLAM入门】7.4.后端优化 --- 基于位姿图和基于因子图

"议论平恕&#xff0c;无所向背” 1. 位姿图1.1 具体做法1.2 小结 2. 因子图2.1 具体做法2.1.1 贝叶斯网络2.1.2 因子图2.1.3 更具体的因子图2.1.4 增量的求解方法 引入&#xff1a; 上节BA将位姿和路标都作为优化的节点&#xff0c;H矩阵也告诉我们路标远大于位姿&#…

Python绘图系统16:动态更新tkinter组件

文章目录 前情提要源代码模式输入序列源码 Python绘图系统&#xff1a; &#x1f4c8;从0开始的3D绘图系统&#x1f4c9;一套3D坐标&#xff0c;多个函数&#x1f4ca;散点图、极坐标和子图自定义控件&#xff1a;极坐标&#x1f4c9;绘图风格&#x1f4c9;风格控件图表类型和…

rsync远程同步+inotify监控

目录 一、Rsync 简介 1、rsync是什么 2、备份的方式 3、rsync同步方式 4、常用rsync命令 5、配置源的两种表达方法 二、rsync实验 1、本地复制 ​编辑​编辑 2、异地复制 2.1 rsync服务器配置 2.2 rsync客户端配置 2.2.1 普通同步 2.2.2 免密同步 2.2.3 --delet…

EmguCV-C#版本Opencv图像识别和处理

目录 0、简介 1、图像处理 &#xff08;1&#xff09;颜色处理 &#xff08;2&#xff09;图像差 &#xff08;3&#xff09;图像拼接 &#xff08;4&#xff09;直方图 &#xff08;5&#xff09;颜色空间/通道提取 2、预处理 &#xff08;1&#xff09;均衡化 &…

idea2021.1.3版本双击启动,没反应

今天打开电脑&#xff0c;点开idea&#xff0c;界面悬在这里&#xff0c;几秒然后就是没了。然后就一直打不开idea了。 然后又是卸载重装&#xff0c;又是删除缓存文件。我把电脑关于idea的文件全都删除了 。重新安装后&#xff08;首次运行倒是可以打开&#xff0c;但是关掉id…

Python爬虫-IP隐藏技术与代理爬取

前言 在进行爬虫程序开发和运行时&#xff0c;常常会遇到目标网站的反爬虫机制&#xff0c;最常见的就是IP封禁&#xff0c;这时需要使用IP隐藏技术和代理爬取。 一、IP隐藏技术 IP隐藏技术&#xff0c;即伪装IP地址&#xff0c;使得爬虫请求的IP地址不被目标网站识别为爬虫。…

spring boot 使用AOP+自定义注解+反射实现操作日志记录修改前数据和修改后对比数据,并保存至日志表

一、添加aop starter依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>二&#xff1a;自定义字段翻译注解。&#xff08;修改功能时&#xff0c;需要显示如…

【mysql】—— 函数的基本介绍

前言&#xff1a; MySQL是一种常用的关系型数据库管理系统&#xff0c;它提供了许多内置的函数来进行数据操作和处理。本期&#xff0c;我将给大家介绍的就是关于 “函数” 的相关知识&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;日期函数 &#…

Linux基础命令(示例代码 + 解释)

查看目录下文件 ls [-a -l -h] [路径] -a&#xff08;全部&#xff09; -l&#xff08;细节&#xff09; -h&#xff08;大小&#xff09; ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…