OpenPyXL用法总结

2021/08/04 Python 共 939 字,约 3 分钟

为了用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)

文档信息

Search

    Table of Contents