带你走进 @ 机器人时代
Discover 点击上面蓝色文字,关注我们
Python 自动化操作单元格,除了设置字体、边框外,还可以对单元格的数字格式进行各种设置:
import xlwings as xw
app = xw.App(visible=False, add_book=False)
wk = app.books.open('订单表.xlsx')
ws = wk.sheets[0]
#选中编辑区域最后一行的行号
rows = ws.range('A1').expand('table').last_cell.row
print(rows)
#设置数字的格式
ws.range(f'B2:B{rows}').number_format = 'yyyy年m月d日'
ws.range(f'D2:D{rows}').number_format = '¥#,##0'
ws.range(f'E2:E{rows}').number_format = '¥#,##0'
ws.range(f'G2:G{rows}').number_format = '¥#,##0.00'
ws.range(f'H2:H{rows}').number_format = '¥#,##0.00'
ws.range(f'I2:I{rows}').number_format = '¥#,##0.00'
wk.save('订单表.xlsx')
wk.close()
app.quit()
运行后,我们打开工作簿,就可以看到数字都被设置成了规定的格式:
如果我们希望给这张数据表加上一个标题,如何实现呢?
import xlwings as xw
app = xw.App(visible=False, add_book=False)
wk = app.books.open('订单表4.xlsx')
ws = wk.sheets[0]
#选择区域
t = ws.range('A1:I1')
#合并单元格
t.merge()
#设置字体
t.font.name = '等线'
t.font.size = 20
#加粗字体
t.font.bold = True
#设置字体的对齐方式
t.api.HorizontalAlignment = -4108
t.api.VerticalAlignment = -4108
#设置行高
t.row_height = 30
#保存工作簿并关闭对象
wk.save()
wk.close()
app.quit()
运行后我得到这样的效果:
当然如果使用openpyxl库也可以轻松设置:
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment
wk = load_workbook('订单表4.xlsx')
ws = wk['总表']
#合并单元格
ws.merge_cells('A1:I1')
#设置字体大小粗细
ws['A1'].font = Font(name='微软雅黑', size=21, bold=True)
#设置单元格文字排版
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')
#设置行高
ws.row_dimensions[1].height = 30
wk.save('订单表4.xlsx')
需要注意的是,wk.save()函数要求必须将保存的文件写出来,否则会报错。运行后得到:
请看下表,如果我们想将重复的单元格进行合并:
如何实现,请看代码:
from openpyxl import load_workbook
wk = load_workbook('订单金额表.xlsx')
ws = wk['Sheet1']
#创建空列表
lists = []
num = 2
#构造永久循环
while True:
#逐个读取A列单元格数据
datas = ws.cell(num, 1).value
#如果有数据就将数据加入列表,否则跳出循环
if datas:
lists.append(datas)
else:
break
num += 1
s = 0
e = 0
data = lists[0]
#根据列表构建循环
for m in range(len(lists)):
if lists[m] != data:
#如果碰到数据不同的行,重新初始化
data = lists[m]
#设置e的值
e = m - 1
if e >= s:
#合并数据相同的行
ws.merge_cells(f'A{s + 2}:A{e + 2}')
s = e + 1
if m == len(lists) - 1:
e = m
#合并数据相同的行
ws.merge_cells(f'A{s + 2}:A{e + 2}')
wk.save('订单金额表1.xlsx')
运行后得到:
。
继续坚持学习,每天都能进步一点!!!
往期回顾:
- 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
- 不要嫌你现在的工作很累,可能你离失业不远了!
- 作为旅游行业的一个小老板,我受够了!这是要被淘汰的节奏吗?
本文引用和摘录相关内容,请联系侵删。
- END -
最后,文章有帮助到你的话【点赞在看】
激励我们分享更多的干货!