讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

剧云
剧云

中文短剧剧本制作平台

updream

一键生成高质量推广成片

Laper
Laper

剧本策划到成片协作

excel-format

Polar Sponsor
爱发电 赞助
.NET 9.0

辅助处理excel表格,设置单元格格式

这种技能遵循[Excel-sefect-work flow]的四步法. . 完成要求解析后, 执行前进行校验. . . [excel-sefect-workfl

功能概述

这种技能遵循[Excel-sefect-work flow]的四步法. . 完成要求解析后, 执行前进行校验. . . [excel-sefect-workfl是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

This skill follows [[excel-safe-workflow]] four-step method. Must complete Requirement Parsing→Scout before execution, and Verify after. 本技能遵循 [[excel-safe-workflow]] 四步法。执行前必须完成 需求解析→勘察,执行后验证。

Excel Format Adjustment / Excel 格式调整

第零步:需求解析

自动识别格式需求 / Auto-detect Format Requirements

从用户原话提取所有已明确的格式参数,只追问没说到的。

要素 常见表述 默认值
字体 "微软雅黑""Arial""Times New Roman" 不改变
字号 "12号""10pt""大一点" 不改变
加粗 "加粗""粗体""bold" 不改变
斜体 "斜体""italic" 不改变
颜色 "红色""蓝色""#FF0000" 不改变
水平对齐 "居中""靠左""靠右""两端对齐" 不改变
垂直对齐 "上下居中""顶部对齐""底部对齐" 不改变
列宽 "列宽15""自适应""自动调整宽度" 不改变
行高 "行高20""自适应" 不改变
应用范围 "表头""全部""E列""第2-10行""数据区" all(整表)

解析示例

用户说 提取
"表头加粗居中,字体改成微软雅黑 12号" 范围=表头, 加粗, 水平居中, 字体=微软雅黑, 字号=12
"全部改成 Arial 10号,金额列右对齐" 范围=全部+金额列, 字体=Arial, 字号=10, 金额列=右对齐
"标题行加粗,数据区垂直居中" 表头=加粗, 数据区=垂直居中
"列宽全部自适应" 全部列, 自适应列宽
"把表格美化一下" 全部, 用默认美化方案

默认美化方案(用户只说"美化"时启用)/ Default Beautify Preset

区域 格式
表头(第1行) 加粗、水平居中、垂直居中、Arial 10pt
数据区(第2行起) 垂直居中、Arial 10pt
所有列 自适应列宽

第一步:勘察

import os, sys
sys.stdout.reconfigure(encoding='utf-8')
from openpyxl import load_workbook

FILE = '目标文件.xlsx'

wb = load_workbook(FILE)
ws = wb.active
print(f'工作表: {ws.title}, 行: {ws.max_row}, 列: {ws.max_column}')

# 展示当前样式状态
print('n=== 当前格式 ===')
for col_idx in range(1, min(ws.max_column + 1, 8)):
    cell = ws.cell(row=1, column=col_idx)
    col_letter = chr(64 + col_idx) if col_idx <= 26 else f'col{col_idx}'
    print(f'  列{col_letter}表头: font={cell.font.name}/{cell.font.size}, '
          f'bold={cell.font.bold}, align={cell.alignment.horizontal}')

# 确认操作范围
print(f'n格式应用范围: {SCOPE}')
print(f'格式参数: {FORMAT_SPEC}')

第二步:执行

import time
t0 = time.time()
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment, PatternFill

# ===== 用户配置 =====
FILE = '目标文件.xlsx'
SCOPE = 'all'           # 'all' / 'header' / 'data' / 'columns' / 'rows' / 'range'

# 字体配置(None = 不改变)
FONT_NAME = 'Arial'     # None 或字体名
FONT_SIZE = 10          # None 或数字
FONT_BOLD = None        # True / False / None
FONT_ITALIC = None      # True / False / None
FONT_COLOR = None       # 'FF0000'(红) / '000000'(黑) / None

# 对齐配置(None = 不改变)
H_ALIGN = None          # 'center' / 'left' / 'right' / 'justify' / None
V_ALIGN = None          # 'center' / 'top' / 'bottom' / None

# 列宽行高(None = 不改变)
COL_WIDTH = None        # 数字 或 'auto'(自适应)
ROW_HEIGHT = None       # 数字 或 'auto'

# 范围限定
HEADER_ROW = 1          # 表头行号
DATA_START = 2          # 数据起始行
TARGET_COLS = None      # None=全部列, [1,2,5]=指定列
TARGET_ROWS = None      # None=全部行(配合SCOPE), [(2,10)]=指定行范围
# ====================

wb = load_workbook(FILE)
ws = wb.active

def build_font():
    """构建字体对象"""
    kwargs = {}
    if FONT_NAME is not None: kwargs['name'] = FONT_NAME
    if FONT_SIZE is not None: kwargs['size'] = FONT_SIZE
    if FONT_BOLD is not None: kwargs['bold'] = FONT_BOLD
    if FONT_ITALIC is not None: kwargs['italic'] = FONT_ITALIC
    if FONT_COLOR is not None: kwargs['color'] = FONT_COLOR
    return Font(**kwargs) if kwargs else None

def build_alignment():
    """构建对齐对象"""
    kwargs = {}
    if H_ALIGN is not None: kwargs['horizontal'] = H_ALIGN
    if V_ALIGN is not None: kwargs['vertical'] = V_ALIGN
    return Alignment(**kwargs) if kwargs else None

new_font = build_font()
new_align = build_alignment()

# 确定操作范围
cols_to_process = TARGET_COLS if TARGET_COLS else list(range(1, ws.max_column + 1))

if SCOPE == 'all':
    rows_to_process = range(1, ws.max_row + 1)
elif SCOPE == 'header':
    rows_to_process = [HEADER_ROW]
elif SCOPE == 'data':
    rows_to_process = range(DATA_START, ws.max_row + 1)
elif SCOPE == 'columns':
    rows_to_process = range(1, ws.max_row + 1)
elif SCOPE == 'rows':
    rows_to_process = TARGET_ROWS if TARGET_ROWS else range(1, ws.max_row + 1)

# 应用格式
count = 0
for row in rows_to_process:
    for col in cols_to_process:
        cell = ws.cell(row=row, column=col)
        if new_font:
            # 合并现有字体属性(只覆盖指定项)
            existing = cell.font
            kwargs = {'name': FONT_NAME if FONT_NAME else existing.name,
                      'size': FONT_SIZE if FONT_SIZE else existing.size,
                      'bold': FONT_BOLD if FONT_BOLD is not None else existing.bold,
                      'italic': FONT_ITALIC if FONT_ITALIC is not None else existing.italic,
                      'color': FONT_COLOR if FONT_COLOR else existing.color}
            cell.font = Font(**kwargs)
        if new_align:
            cell.alignment = new_align
        count += 1
    if row % 50000 == 0:
        print(f'  进度: {row}/{ws.max_row}')

print(f'已格式化 {count} 个单元格')

# 列宽
if COL_WIDTH == 'auto':
    # 用 pandas 快速计算每列最大宽度(比 openpyxl 逐格扫快 100 倍)
    import pandas as pd, numpy as np
    from openpyxl.utils import get_column_letter

    df = pd.read_excel(FILE)
    for col_idx in cols_to_process:
        col_name = df.columns[col_idx - 1]
        # 取前 5000 行 + 随机抽样 1000 行估算最大宽度
        sample = df[col_name].dropna().head(5000).astype(str)
        if len(sample) == 0:
            continue
        # 中文字符算 2 宽度,其余算 1
        def char_width(s):
            return sum(2 if ord(c) > 127 else 1 for c in str(s))
        max_len = sample.apply(char_width).max()
        # 表头也参与计算
        header_len = char_width(str(col_name))
        max_len = max(max_len, header_len)
        col_letter = get_column_letter(col_idx)
        ws.column_dimensions[col_letter].width = min(max_len + 3, 50)
elif COL_WIDTH is not None:
    from openpyxl.utils import get_column_letter
    for col_idx in cols_to_process:
        ws.column_dimensions[get_column_letter(col_idx)].width = COL_WIDTH

# 行高
if ROW_HEIGHT == 'auto':
    for row in rows_to_process:
        ws.row_dimensions[row].height = None  # Excel 自动计算
elif ROW_HEIGHT is not None:
    for row in rows_to_process:
        ws.row_dimensions[row].height = ROW_HEIGHT

print(f'n保存中...')
wb.save(FILE)
print(f'完成,耗时 {time.time()-t0:.1f}s')

第三步:验证

wb = load_workbook(FILE, read_only=True, data_only=True)
ws = wb.active

# 验证表头格式
cell = ws.cell(row=1, column=1)
print(f'表头字体: {cell.font.name}/{cell.font.size}pt')
print(f'表头加粗: {cell.font.bold}')
print(f'表头对齐: {cell.alignment.horizontal}/{cell.alignment.vertical}')

# 验证数据区
cell2 = ws.cell(row=2, column=1)
print(f'数据字体: {cell2.font.name}/{cell2.font.size}pt')

# 验证列宽
if ws.column_dimensions['A'].width:
    print(f'A列宽: {ws.column_dimensions["A"].width}')

wb.close()
print('✅ 验证完成')

常用预设 / Common Presets

专业报表风 / Professional Report

FONT_NAME='Arial', FONT_SIZE=10, FONT_BOLD=True(header)
H_ALIGN='center'(header+data), V_ALIGN='center'
COL_WIDTH='auto'

中文文档风 / Chinese Document

FONT_NAME='微软雅黑', FONT_SIZE=11
FONT_BOLD=True(header), H_ALIGN='center'(header)
V_ALIGN='center', COL_WIDTH='auto'

仅加粗居中表头 / Bold+Center Header Only

SCOPE='header', FONT_BOLD=True, H_ALIGN='center', V_ALIGN='center'

注意事项

  1. 列宽自适应对中文友好(中文字符计 2 宽度),上限 40 字符
  2. 字体可用性取决于 Excel 打开时的系统,Arial/微软雅黑 一般都有
  3. 合并单元格中的格式需单独处理
  4. 格式叠加:None 的参数不会被修改,保留原有格式
  5. 操作前必备份:遵循 [[excel-safe-workflow]] 第零步——操作前自动备份(时间戳命名),成功后保留最新3份,失误后立即删除损坏文件并从备份恢复
目录

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

SoundView
SoundView Hot

SoundView是一款面向跨境电商的视频翻译、配音和本地化 AI 创作平台。

相关专题

更多
Excel制作交互图表的方法 Excel交互式的图表教程大全
Excel制作交互图表的方法 Excel交互式的图表教程大全

Excel交互式图表可通过四种方法实现:一、用切片器控制数据透视图;二、结合下拉列表与INDEX-MATCH动态引用;三、用选项按钮绑定图表系列;四、利用动态命名区域配合OFFSET函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1820

2026.01.04

excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

205

2025.12.29

Excel图表制作全流程
Excel图表制作全流程

本专题整合了excel制作图表的相关教程,阅读专题下面的文章了解更多详细内容。

240

2025.12.23

excel xls与xlsx的区别
excel xls与xlsx的区别

本专题整合了excel中xls与xlsx的区别,阅读专题下面的文章了解更多详细内容。

357

2025.12.23

excel 绝对值
excel 绝对值

本专题整合了excel绝对值相关教程,阅读专题下面的文章了解更多详细内容。

839

2025.12.09

Excel如何制作一个动态交互式图表
Excel如何制作一个动态交互式图表

首先通过准备数据源并创建基础图表,再插入表单控件实现用户交互,接着使用INDEX公式提取对应数据,然后将图表数据源指向动态区域,最后优化布局与标题实现动态更新。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1738

2025.11.28

excel算方差教程
excel算方差教程

计算方差的步骤依次为:1. 计算平均值;2. 计算差异的平方;3. 求和平方值;4. 除以数据点数。想要了解更多相关内容,请阅读专题下面的文章。

4049

2025.05.27

怎么用excel制作标签
怎么用excel制作标签

用 Excel 制作标签,若为普通工作表标签,可右键单击标签选 “重命名” 来修改名称;选 “标签颜色” 设置颜色用于区分。若制作数据标签,比如地址标签,先在 Excel 整理好数据,再借助 Word 的邮件合并功能。在 Word 中依次操作:“邮件” 选项卡→“开始邮件合并”→“标签”,选好标签类型,导入 Excel 数据并设置格式,完成后打印 。

6551

2025.04.14

excel提取想要的数据
excel提取想要的数据

提取方法有很多种。直接定位:使用“定位”功能选择所需数据。筛选:根据条件筛选数据,显示满足条件的单元格。条件格式:突出显示满足特定条件的数据单元格。高级筛选:指定条件,将提取的数据粘贴到目标范围。公式:使用 index、if、sumif、countif 等函数从数据中提取值。vba 宏:编写脚本以自动提取数据,满足特定条件。

5430

2025.01.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 45.7万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn