上周临时接到一个活,要对excel文件做一些操作,涉及到复制文件、修改已有文件(修改单元格的值、插入行、设置合并单元格的边框)。下面将大概介绍一下用到的工具和方法。
- 工具
python
其实博主写的最多的是Java,但是觉得Java有点重,这里想换换手,所以选了python。中途遇到困难一度想是不是去用Java的POI,但是忍住了,哈哈。
import os
from openpyxl import load_workbook
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
from openpyxl.writer.excel import ExcelWriter
import shutil
import func_insert_row
import time
可以看到这里用的是openpyxl,为啥不用pandas,xlrd,xlwt呢? 其实上来是用的pandas,但是发现它似乎是用来处理数据,而不是用来操作excel,后来经过搜索研究(当然也是很快的),openpyxl在操作excel上应该是功能最强大的。
- 方法
主要涉及到这样几个操作:
- 复制文件
复制文件用的是
shutil.copy('template.xlsx','test.xlsx')
- 获取workbook
workbook_temp = load_workbook('test.xlsx')
main_sheet_temp = workbook_temp.get_sheet_by_name('Sheet1')
- 修改单元格的值
直接使用=就好,下面是修改main_sheet_temp的B3单元格的值为1024
main_sheet_temp['B3'] = '1024'
- 插入行
参考了此处
最后一个是 关于样式的,因为使用openyxl修改了现有文件后,会把现有文件中合并单元格的边框去掉。
这个暂时没有办法解决,只能后期再把这个边框添加上去,下面就会讲到。
- 设置合并单元格的边框
参考了官方文档 里的style_range
方法
最后,可能会用到的方法还有:
main_sheet_temp.max_row #获取sheet里的内容行数
main_sheet_temp.merged_cell_ranges #获取sheet里的所有合并单元格
网友评论