python 通过openpyxl 实现对xlsx的操作

前言

通过对 openpyxl 技术的深入学习,实现对xlsx格式文件的各种操作


本文收获

  1. 实现对单元格的 公式文字居中边框样式字体背景 设置
  2. 单元格合并操作
  3. 页的操作
  4. 对数据的处理

单元格设置

# 设置值或者公式
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个常用的关于合并单元格的方法

  1. merge_cells (self, range_string=None, start_row=None,start_column=None, end_row=None, end_column=None) 合并单元格
  2. 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 列举几个常用的关于页操作的方法

  1. create_sheet (self, title=None, index=None) 创建页
  2. _add_sheet (self, sheet, index=None) 添加页 index 不存在就追加,存在就插入
  3. copy_worksheet (self, from_worksheet) 复制页
  4. 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 列举一些常用的关于单元格值的方法

  1. append (self, iterable) 追加数据,iterable 是一个迭代对象,建议查看源码,详细注释了可以使用哪些格式
  2. cell (self, row, column, value=None) 通过坐标的方式给单元格设置值
  3. delete_rows (self,idx, amount=1) 删除行
  4. delete_cols (self, idx, amount=1) 删除列
  5. insert_rows (self, idx, amount=1) 插入行
  6. 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 实现多种策略模式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值