如何使用Python将Excel指定工作表列中的指定字符串批量设置为粗体
Excel指定工作表指定列目标字符串加粗实现方案
你给出的示例数据集如下:
首先修正原代码的两个基础错误:
- pandas的
to_excel()方法无返回值,你赋值给excel_file的操作无效,后续直接传入Excel文件路径即可 - 调用函数时的
sheet1是字符串类型,需要用引号包裹
实现思路
使用openpyxl库处理Excel单元格样式,步骤如下:
- 加载已生成的Excel文件,定位到指定工作表
- 自动匹配
neighborhood列对应的列位置,避免硬编码列序号 - 遍历该列所有数据单元格,符合匹配规则的单元格设置为粗体
- 保存修改后的文件
依赖安装
运行前先安装操作Excel格式的依赖:pip install openpyxl
完整可运行代码
import pandas as pd from openpyxl import load_workbook from openpyxl.styles import Font # csv转Excel步骤 read_file = pd.read_csv(r'data.csv') read_file.to_excel(r'data.xlsx', index=None, header=True, engine='openpyxl') words_to_bold = ['Chinatown', 'west village', 'upper west side'] def list_bold(wordList, filename, sheet_name, target_col_name='neighborhood'): # 加载Excel文件 wb = load_workbook(filename) # 定位指定工作表 ws = wb[sheet_name] # 查找目标列的列索引 target_col_idx = None for col in range(1, ws.max_column + 1): if ws.cell(row=1, column=col).value == target_col_name: target_col_idx = col break if not target_col_idx: raise ValueError(f"未找到目标列:{target_col_name}") # 定义粗体样式 bold_font = Font(bold=True) # 遍历目标列所有数据行(跳过表头) for row in range(2, ws.max_row + 1): cell = ws.cell(row=row, column=target_col_idx) cell_val = str(cell.value).strip() if cell.value else "" # 完全匹配时加粗整格,需要部分匹配可自行调整判断逻辑 if cell_val in wordList: cell.font = bold_font # 保存修改 wb.save(filename) # 调用函数 list_bold(words_to_bold, r'data.xlsx', 'sheet1')
补充说明
上述代码默认是单元格内容和目标词完全匹配时,将整个单元格内容设置为粗体。如果需要实现「单元格内容包含目标词时仅将目标词单独加粗,其余内容保持普通样式」,可以改用openpyxl的RichText富文本逻辑实现。
内容的提问来源于stack exchange,提问作者Henry Damas
相关产品推荐
相关产品推荐

