如何用openpyxl为已有数据的Excel工作簿统一设置Arial字体?
解决方案
方法一:修改工作簿默认样式(无需遍历单元格)
openpyxl里的DEFAULT_FONT仅对新建单元格生效,已存在的单元格会保留原有样式配置。要批量修改已有单元格的字体,可直接修改工作簿的默认命名样式(通常为Normal),所有使用该默认样式的单元格会自动应用新字体:
from openpyxl import load_workbook from openpyxl.styles import Font, NamedStyle wb = load_workbook('my_path\\MyExcel.xlsx') # 执行你的数据写入操作 # 获取工作簿默认的Normal样式 normal_style = wb.styles['Normal'] # 将该样式的字体设置为Arial normal_style.font = Font(name='Arial') wb.save('my_path\\MyExcel.xlsx')
注意:此方法仅对使用默认Normal样式的单元格生效。如果部分单元格之前被设置了自定义字体(比如手动修改过字体),这些单元格不会被修改。
方法二:高效遍历所有单元格(覆盖所有情况)
如果需要强制所有单元格(包括自定义样式的)都改为Arial,可使用iter_rows()或iter_cols()高效遍历,比逐个单元格循环更节省资源:
from openpyxl import load_workbook from openpyxl.styles import Font wb = load_workbook('my_path\\MyExcel.xlsx') # 执行你的数据写入操作 # 定义Arial字体对象,避免重复创建 arial_font = Font(name='Arial') # 遍历所有工作表 for ws in wb.worksheets: # 遍历工作表中所有有数据的单元格 for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column): for cell in row: # 直接替换单元格字体 cell.font = arial_font wb.save('my_path\\MyExcel.xlsx')
内容的提问来源于stack exchange,提问作者Tester
相关产品推荐
相关产品推荐

