要格式化单元格而不覆盖其内容,可以使用条件格式化或使用样式对象来修改单元格的格式。以下是两个解决方法的代码示例。
方法一:使用条件格式化
import openpyxl
from openpyxl.styles import PatternFill
# 加载工作簿
workbook = openpyxl.load_workbook('example.xlsx')
# 选择工作表
worksheet = workbook['Sheet1']
# 遍历单元格
for row in worksheet.iter_rows(min_row=2, min_col=1, max_row=worksheet.max_row, max_col=worksheet.max_column):
for cell in row:
# 设置条件格式化规则(示例为判断单元格值是否大于10)
if cell.value > 10:
# 设置单元格格式(示例为背景色为红色)
cell.fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid')
# 保存工作簿
workbook.save('example_formatted.xlsx')
方法二:使用样式对象
import openpyxl
from openpyxl.styles import PatternFill
# 加载工作簿
workbook = openpyxl.load_workbook('example.xlsx')
# 选择工作表
worksheet = workbook['Sheet1']
# 创建样式对象
style = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid')
# 遍历单元格
for row in worksheet.iter_rows(min_row=2, min_col=1, max_row=worksheet.max_row, max_col=worksheet.max_column):
for cell in row:
# 判断单元格值是否满足格式化条件(示例为判断单元格值是否大于10)
if cell.value > 10:
# 应用样式对象到单元格
cell.fill = style
# 保存工作簿
workbook.save('example_formatted.xlsx')
这两种方法都可以在不直接覆盖单元格内容的情况下格式化单元格。方法一使用条件格式化规则,方法二使用样式对象。根据具体需求选择合适的方法来格式化单元格。