为了用python处理excel数据,所以使用了OpenPyXL
这个python package。官网教程如下:openpyxl,实际上官网教程太简略,很多用法根本没写,所以我把我用到的方法都总结如下:
读取Excel
import openpyxl
# load workbook
file_path = '/dataset/test.xlsx'
wb = openpyxl.load_workbook(file_path)
# 获取sheet,得到一个存储sheet名称的列表
sheet_list = wb.sheetnames
# 假设我们要读取第一个sheet
sheet_name = sheet_list[0]
sheet = wb[sheet_name]
遍历单元格
# 得到整个sheet的最大行数
_max_row = sheet.max_row
# 得到整个sheet的最大列数
_max_col = sheet.max_column
# 按行,列来遍历单元格,注意行和列都由1开始
for row_id in range(1, _max_row):
for col_id in range(1, _max_col):
cell = sheet.cell(row=row_id, columns=col_id)
if cell.value != None:
# 在这里写操作
pass
获取单元格的颜色
# bgColor取得单元格的背景色值
print("bgColor = ", cell.fill.bgColor.rgb)
# fgColor取得单元格的前景色值
print("fgColor = ", cell.fill.fgColor.rgb)
特别需要注意一件事情,这可能是OpenPyXL的bug之一,背景色如果没有定义,这里是无法用print
输出的。所以,作为一个比较简单的解决方案,假设excel中用黄色高亮了一些单元格,其他的单元格都没有填充颜色,那么怎么将这两类数据分开处理呢?
# “00000000”是一定有定义的RGB值,代表无填充颜色,这样可以规避RGB颜色没有定义的问题
if cell.fill.bgColor.rgb != "00000000":
print("无填充色的单元格值为:", cell.value)
else:
print("有填充色的单元格值为:", cell.value)
文档信息
- 本文作者:weownthenight
- 本文链接:https://weownthenight.github.io/2021/08/04/OpenPyXL%E7%94%A8%E6%B3%95%E6%80%BB%E7%BB%93/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)