背景:由于工作原因,需要根据excel表格里的不同数据,配置不同颜色或样式给领导,由于excel有多张表格,并且是每个月都要做的工作,故考虑用Python实现。
工具:Python的xlwings库
方法:
第一步:打开文件
import xlwings as xw # 这是用来操作excel的工具
app = xw.App(visible=False,add_book=False) # 创建一个对象(感觉像是若操作多个表可以创建多个app)
wb = app.books.open(r'F:\Python常用色值表.xlsx') # 这样就打开了一个excel文件
sht1 = wb.sheets('Sheet1') # 进入到文件的第一个Sheet
第二步:操作sheet页面
1.我们可以打开excel,看下它的基本情况(多少行,多少列,某个位置的值是什么,都有什么类型数据)
sht1.range('a1').end('down').row # a列一共有多少行,这里不分大小写,或a:a
# 注意:可用a+i,若ai是有数据的,显示数据有多少行,ai空白的话,就显示这张sheet含空白行一共多少行
# up,down,left,right都能填写,注意是要看row还是column,这个对后续写循环操作很有用处
sht1.range('a1').end('right').column # 第1行有多少列
sht1.range('a1').value # 查看特定单元格的内容,返回一个值
sht1.range('a1:c20').value # 查看范围内的数据,返回一个列表
sht1.range('a:a').value # 查看整个sheet的a列的值,空白是None
2.赋值
sht1.range('a1').value = ? # 特定单元格赋值
sht1.range('i1:i50').value = ? # 多个单元格赋值
3.修改样式
a.修改单元格填充色
for i in range(1, sht1.range('b1').end('down').row+1): # 此处的1是Python从0开始计数,excel从1开始
v = 'd' + str(i) # 可有可无,是我判断色值是数值的列,我想要填充色的那一列
v1 = 'e' + str(i) # 颜色要3个数字的元组,此三列组合即可,方法很多
v2 = 'f' + str(i)
v3 = 'g' + str(i)
if isinstance(sht1.range(v1).value,str): # 判断第一行是标题字符串,不赋值
continue
color = [sht1.range(v1).value,sht1.range(v2).value,sht1.range(v3).value]
sht1.range(v).color = tuple(color)
b.修改文字样式
sht1.range(a1: h1).api.Font.Color = 0x0000ff # 修改文字颜色
sht1.range('a1').api.Font.Size = 12 # 设置文字大小,貌似不分大小写
sht1.range('a1').api.Font.bold = True # 加粗,貌似不分大小写Bold和bold
sht1.range('a1').api.Font.name = '微软雅黑' # 设置微软雅黑字体
sht1.range(a1: h1).api.Font.Color # 查看文字颜色
sht1.range('a1').api.Font.Size # 查看文字大小
sht1.range('a1').api.Font.bold # 查看文字是否加粗
sht1.range('a1').api.Font.name # 查看字体
第三步:保存文件
wb.save() # 保存表格
wb.close() # 关闭表格
app.quit() # 退出app
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。