前言
通过对 openpyxl 技术的深入学习,实现对xlsx格式文件的各种操作
本文收获
- 实现对单元格的 值,公式,文字居中,边框样式,字体,背景 设置
- 单元格合并操作
- 页的操作
- 对数据的处理
单元格设置
# 设置值或者公式
sheet.cell(row=row, column=column).value = value
#设置文字居中
sheet.cell(row=row, column=column).alignment = Alignment(horizontal="center", vertical="center")
#设置边框样式
double = Side(border_style="double", color="00000000")
thin = Side(border_style="thin", color="00CC99FF")
sheet.cell(row=row, column=column).border = Border(top=double, left=thin, right=thin, bottom=double)
#设置字体
sheet.cell(row=row, column=column).font = Font(bold=True)
#设置背景
sheet.cell(row=row, column=column).fill = PatternFill(start_color="00FFFF00", end_color="00FFFF00", fill_type = "solid")
如果单元格需要设置公式,通过 value 属性设置即可
sheet.cell(row=row, column=column).value = f'=sum(L3:L8)'
可以通过源码查看例如alignment类的构造参数,以及属性的值列表
合并单元格
通过查看源码 worksheet.py 列举2个常用的关于合并单元格的方法
- merge_cells (self, range_string=None, start_row=None,start_column=None, end_row=None, end_column=None) 合并单元格
- unmerge_cells (self, range_string=None, start_row=None,start_column=None, end_row=None, end_column=None) 解除合并
个人觉得第一种适合循环设置的场景,不用关注字母
sheet.merge_cells(start_row=1,end_row=3,start_column=1,end_column=3)
sheet.merge_cells(range_string="A1:B5")
页的操作
通过查看源码 workbook.py 列举几个常用的关于页操作的方法
- create_sheet (self, title=None, index=None) 创建页
- _add_sheet (self, sheet, index=None) 添加页 index 不存在就追加,存在就插入
- copy_worksheet (self, from_worksheet) 复制页
- remove_sheet (self,worksheet) 删除页
newWb = openpyxl.Workbook()
sheet = newWb.create_sheet(title="新建了个页")
newWb.copy_worksheet(sheet)
newWb.remove(sheet)
newWb._add_sheet(sheet, 1)
可以预测一下结果,是否如你想的那样呢?
单元格值操作
通过查看源码 worksheet.py 列举一些常用的关于单元格值的方法
- append (self, iterable) 追加数据,iterable 是一个迭代对象,建议查看源码,详细注释了可以使用哪些格式
- cell (self, row, column, value=None) 通过坐标的方式给单元格设置值
- delete_rows (self,idx, amount=1) 删除行
- delete_cols (self, idx, amount=1) 删除列
- insert_rows (self, idx, amount=1) 插入行
- insert_cols (self, idx,amount=1) 插入列
newWb = openpyxl.Workbook()
sheet = newWb.create_sheet(title="新建了个页")
sheet.cell(row=1,column=1).value = 100
sheet.cell(row=2,column=1).value = 200
sheet.cell(row=3,column=1).value = 200
sheet.cell(row=4,column=1).value = f'=sum(A1:A3)'
sheet.append({'A':"追加A","B":"追加B"})
sheet.insert_rows(1)
sheet.cell(row=1,column=1).value = "猜猜我是谁"
看下结果是不是跟你想的一样呢
总结
实际开发中,通过查看源码不仅可以找到自己想要的函数,还能看到作者的注释细节和一些开发理念。
不光能够快速干活,也能增强自己的开发能力
Python 系列:
读取文件 – 使用 python 读取 xls,xlsx,csv,doc,docx,pdf 格式的文件
阅读小工具 – 使用 python 开发无边框窗体阅读小工具
操作xlsx文件 – 使用 openpyxl 技术对 xlsx 的各种操作
前端系列:
扫雷游戏 – JavaScript 仿造 windows 编写 扫雷游戏
前端工具库 xlsx 处理表头合并 – 如何使用 xlsx 技术处理复杂的表头合并
CSS 布局技巧 – 对整体布局的心得体会
NVM Node 多版本控制教程 – Node 版本控制神器 NVM
Spring 系列:
Spring部署 – Spring 的多种 linux 部署方式
Spring实现策略模式 – 通过 Spring 实现多种策略模式