【Python】处理Excel的库Xlwings
# # 引入库
import xlwings as xw
import time # 打开Excel程序,默认设置:程序可见,只打开不新建工作薄
# app = xw.App(visible=True,add_book=False)
#新建工作簿 (如果不接下一条代码的话,Excel只会一闪而过,卖个萌就走了)
# wb = app.books.add() # 打开已有工作簿(支持绝对路径和相对路径)
# wb = app.books.open('example.xlsx')
练习的时候建议直接用下面这条,这样的话就不会频繁打开新的Excel
wb = xw.Book('example.xlsx') print('-----新建sheet-----')
wb.sheets.add('jenny') # 引用Excel工作表,单元格
print('-----引用-----')
# 引用工作表
sht = wb.sheets[0]
#sht = wb.sheets[第一个sheet名] # 引用单元格
rng = sht.range('a1')
# #rng = sht['a1']
# #rng = sht[0,0] 第一行的第一列即a1,相当于pandas的切片
print ("引用单元格: "+str(rng.value))
#
# # 引用区域
rng = sht.range('a1:a5')
#rng = sht['a1:a5']
#rng = sht[:5,0]
print ("引用区域: "+str(rng.value)) # 重头戏:写入数据
# (xlwings多个单元格的写入大多是以表格形式)
print('-----写入-----')
# 选择起始单元格A1,写入字符串‘Hello’
print('-----写入单元格-----')
sht.range('a1').value = 'Hello'
time.sleep(3)
# 默认按行插入:A1:D1分别写入1,2,3,4
print('-----按行写入-----')
sht.range('a1').value = [1,2,3,4]
time.sleep(3) # 等同于
# sht.range('a1:d1').value = [1,2,3,4] # 按列插入: A2:A5分别写入5,6,7,8
# 你可能会想
sht.range('a2:a5').value = [5,6,7,8] # 但是你会发现xlwings还是会按行处理的,上面一行等同于
# sht.range('a2').value = [5,6,7,8] # 正确语法:
print('-----按列写入-----')
sht.range('a2').options(transpose=True).value = [5,6,7,8]
# 既然默认的是按行写入,我们就把它倒过来嘛(transpose),单词要打对,如果你打错单词,它不会报错,而会按默认的行来写入(别问我怎么知道的) # 我们输入信息的时候往往不只是写入一行或一列,
# 多行输入就要用二维列表了:
sht.range('a6').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']] #B2到E5单元格全部赋同样的值
sht.range("B2","E5").value="bb" # 说完了写入就该讲读取了,记住了写入,读取就简单了
# 读取A1:D4(直接填入单元格范围就行了)
print('-----读取单元格内容-----')
print("读取A1:D4: "+str(sht.range('a1:d4').value)) # 返回的值是列表形式,多行多列为二维列表,但有一点要注意,返回的数值默认是浮点数
a = sht.range('a1:d1').value
print("读取A1:D1: "+str(a))
for i in a:
print("读取单元格: "+str(i))
print("单元格数据类型: "+str(type(i))) # 读取excel的第一列怎么做?
a = sht.range('a:a').value
print (a)
print(len(a))
# 你将会得到一个1048576个元素的列表,也就是空值也包含进去了,所以这种方法不行 # 思路:先计算单元格的行数(前提是连续的单元格)
rng = sht.range('a1').expand('table')
nrows = rng.rows.count # 接着就可以按准确范围读取了
a = sht.range(f'a1:a{nrows}').value
print("读取excel的第一列: "+str(a)) # 同理选取一行的数据也一样
ncols = rng.columns.count
#用切片
fst_col = sht[0,:ncols].value
print("读取excel的第一行: "+str(fst_col)) # 获取单元格字体,大小,颜色等属性
print('-----读取格式-----')
font_name = sht.range('A1').api.Font.Name # 获取字体名称
font_size = sht.range('A1').api.Font.Size # 获取字体大小
bold = sht.range('A1').api.Font.Bold # 获取是否加粗,True--加粗,False--未加粗
color = sht.range('A1').api.Font.Color # 获取字体颜色
print("A1单元格字体:"+font_name)
print("A1单元格大小:"+str(font_size))
print("A1单元格是否加粗:"+str(bold))
print("A1单元格颜色:"+str(color)) # 设置单元格字体,大小,颜色等属性
print('-----设置格式-----')
sht.range('A1').api.Font.Name = 'Times New Roman' # 设置字体为Times New Roman
sht.range('A1').api.Font.Size = 15 # 设置字号为15
sht.range('A1').api.Font.Bold = True # 加粗
sht.range('A1').api.Font.Color = 0x0000ff # 设置为红色RGB(255,0,0)
font_name = sht.range('A1').api.Font.Name # 获取字体名称
font_size = sht.range('A1').api.Font.Size # 获取字体大小
bold = sht.range('A1').api.Font.Bold # 获取是否加粗,True--加粗,False--未加粗
color = sht.range('A1').api.Font.Color # 获取字体颜色
print("A1单元格字体:"+font_name)
print("A1单元格大小:"+str(font_size))
print("A1单元格是否加粗:"+str(bold))
print("A1单元格颜色:"+str(color)) # 设置背景色
print('-----设置背景色-----')
sht.range('A6:V10').color = (255,0,255)
time.sleep(3) sht["A1048576"].end('up').row #最大行,根据单元格位置
print(sht["XFD1"].end('left').column) #最大列,根据单元格位置 # 清理内容,清理数据及格式
print('-----清理内容,清理数据及格式-----')
sht.range('A6:V10').clear() # 删除行和列,插入行和列
print('-----按行写入-----')
sht.range('b2').value = ["papi","lucy","kunal","snoopy"]
print('-----按列写入-----')
sht.range('b3').options(transpose=True).value = ["year","month"]
print('-----删除行和列,插入行和列-----')
sht.api.rows(1).delete #删除首行
time.sleep(3)
sht.api.columns(1).delete# 删除首列
sht.api.columns(2).insert #插入列
sht.api.rows(2).insert #插入行
time.sleep(3) # 合并单元格
print('-----合并单元格-----')
sht.range('A1:A5').api.merge() # 保存工作簿
wb.save('example.xlsx') # 退出工作簿(可省略)
wb.close() # 退出Excel
app.quit()
#
【Python】处理Excel的库Xlwings的更多相关文章
- Python之excel第三方库xlrd和xlwt
Python读取excel表格的库xlrd,首先安装xlrd: pip3 install xlrd 代码: #!usr/bin/env python3 #!-*-coding=utf-8 -*- '' ...
- python基础===Excel处理库openpyxl
openpyxl是一个第三方库,可以处理xlsx格式的Excel文件. 安装: pip install openpyxl 对如下excel进行读取操作,如图: from openpyxl import ...
- 27.python中excel处理库openpyxl使用详解
openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 ? 1 2 3 from openpyxl ...
- 转载: pyExcelerator(Python操作Excel内库)API 文档
1.pyExcelerator 主要通过俩个Object操作Excel: Workbook 和Worksheet2.pyExcelerator 读取Excel文件 parase_xls(filenam ...
- python操作Excel的库openpyxl
http://openpyxl.readthedocs.io/en/default/tutorial.html 这里先上该库的文档镇文. 1,遇到合并后的单元格信息读取的问题,通过使用cell中off ...
- python读写Excel方法(xlwt和xlrd)
在我们做平常工作中都会遇到操作excel,那么今天写一篇,如何通过python操作excel,当然python操作excel的库有很多,比如pandas,xlwt/xlrd,openpyxl等,每个库 ...
- python操作excel——openpyxl
一.概述 python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html 官方文档:https://openpyxl.read ...
- python 对 excel 的操作
参考:https://www.php.cn/python-tutorials-422881.html 或 https://blog.51cto.com/wangfeng7399/2339556(使用 ...
- python读Excel方法(xlrd)
在我们做平常工作或自动化测试中都会遇到操作excel,Python处理exc相当顺手,如何通过python操作excel,当然python操作excel的库有很多,比如pandas,xlwt/xlrd ...
随机推荐
- 记录前端开发vue常见问题,不断更新
1.点击刷新当天组件 1.可以在query中添加一个时间戳,缺点就是不好看 2.加一个重定向页面redirect页面,然后在beforecreate时this.$router.replace原路径 2 ...
- 如何开发出成功的iOS应用(流程图)
转自:http://mobile.51cto.com/hot-307342.htm 近来,肥沃的应用开发土壤不断孕育出一个个振奋人心的故事,成千上万的人都觊觎从这个机遇无限的领域中分一杯羹.虽然现在的 ...
- SpringBoot 整合websocket
1.MyWebSocket package org.hxm.webSocket; import java.io.IOException; import java.util.concurrent.Cop ...
- Prometheus(一):Prometheus+Grafana 安装配置
一.基础环境 系统 IP 监控主机 CentOS 7 192.168.56.200 被监控主机 CentOS 7 192.168.56.201 二.Prometheus服务端安装 以下操作皆在监控主机 ...
- Android端项目测试
目录 一.概述 二.使用工具 三.测试 1.测试主要的两大功能 进入主界面,测试排行榜查看功能是否能运行 测试83端口打卡能否运行 修改个人信息已经注册功能 2.测试参数是否正确 3.测试刷新能否使用 ...
- spring-data-redis 关于订阅客户端不断创建新线程的问题
项目中使用了spring-data-redis 实现消息订阅功能,原来的配置是这样子: <redis:listener-container connection-factory="je ...
- python 和 R 中的整数序列
python 中的 range() 函数是很常用的,R 中相应的函数是 seq(), 其实,R 中的“ :”也能代替 python 中的 range() 函数. 1.生成升序整数序列 python: ...
- vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
公司最近做的一个移动端项目从搭框架到前端开发由我独立完成,以前做移动端适配用的媒体查询,这次想用点别的适配方案,然后就采用了vue-cli3.0结合lib-flexible.px2rem实现移动端适配 ...
- S3C2440_LCD控制器
1.LCD控制器主要有两方面的功能: 1)从framebuffer中取出某个像素的数据: 2)配合其他信号,一起将这个数据发送给LCD 不管是2440,还是其他型号的ARM芯片.它们的LCD控制器的功 ...
- 201871010110-李华《面向对象程序设计(java)》第四周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...