You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:45:01