如何使用Python合并Excel两列并保留各自的字体样式
Python合并Excel列并保留原字体样式的实现方法
可以实现,用openpyxl库就能搞定——它支持Excel的富文本格式,能让合并后的文本保留各自原有的字体大小、颜色等样式。
具体步骤:
- 先安装依赖库:
pip install openpyxl
- 示例代码:
from openpyxl import load_workbook from openpyxl.styles import Font from openpyxl.cell.text import InlineFont from openpyxl.cell.rich_text import TextBlock, RichText # 加载Excel文件 wb = load_workbook("你的文件路径.xlsx") ws = wb.active # 或者指定工作表,比如wb["Sheet1"] # 遍历需要处理的行(这里假设从第2行开始,第1行是表头) for row in range(2, ws.max_row + 1): # 获取两列的单元格,这里假设是A列和B列 cell_a = ws[f"A{row}"] cell_b = ws[f"B{row}"] # 创建富文本对象 rich_text = RichText() # 添加A列的文本和样式 if cell_a.value is not None: # 获取原单元格的字体样式 font_a = cell_a.font inline_font_a = InlineFont( name=font_a.name, sz=font_a.sz, color=font_a.color, bold=font_a.bold, italic=font_a.italic ) rich_text.append(TextBlock(inline_font_a, str(cell_a.value))) # 可以加个分隔符,比如空格或者逗号 if cell_a.value and cell_b.value: rich_text.append(" ") # 添加B列的文本和样式 if cell_b.value is not None: font_b = cell_b.font inline_font_b = InlineFont( name=font_b.name, sz=font_b.sz, color=font_b.color, bold=font_b.bold, italic=font_b.italic ) rich_text.append(TextBlock(inline_font_b, str(cell_b.value))) # 将富文本写入目标单元格,比如C列 ws[f"C{row}"].value = rich_text # 保存修改后的文件 wb.save("合并后的文件.xlsx")
代码说明:
- 用
RichText和TextBlock构建带样式的文本,每个TextBlock对应一段带特定字体样式的内容 - 提取原单元格的
font属性,把字号、颜色、字体名等参数传给InlineFont,就能复刻原样式 - 可以根据需要调整分隔符,或者优化空单元格的处理逻辑
内容的提问来源于stack exchange,提问作者Sitemn
相关产品推荐
相关产品推荐

