1. 项目概述一个为AI量身定制的Excel生产力工具箱如果你和我一样每天的工作都离不开Excel但又不是那种能把VBA玩出花来的“表哥表姐”那你一定经历过这样的痛苦面对一堆数据明明知道用个XLOOKUP或者做个数据透视表就能解决但就是记不住具体的语法或者对着Power Query的界面手足无措。更别提想用Python的openpyxl来自动化处理报表时每次都要重新翻文档写出来的代码还总在“公式变成字符串”这种坑里反复横跳。最近一年我尝试用Cursor、Claude Code这类AI编程助手来解放生产力发现它们处理Excel需求时经常“一本正经地胡说八道”。比如让它写个SUMIFS它可能把参数顺序搞反让它用openpyxl生成一个带公式的报表生成的.xlsx文件打开后所有公式单元格都显示为文本需要手动按F9重算才能出结果——这完全失去了自动化的意义。正是这些切肤之痛催生了excel-skill这个项目。它不是一个传统的Excel教程而是一个专门为AI Agent设计的、结构化的Excel知识库同时附带了金融、快消、电商、互联网四大行业的实战模板和一套开箱即用的Python自动化工具。它的核心目标很简单让AI能真正理解你的业务场景并生成立即可用、不出错的Excel文件、公式、透视表或仪表盘而不是让你在AI的幻觉和Excel的复杂文档之间反复拉扯。简单说这是给AI的“Excel使用说明书”和“行业模板工具箱”最终目的是让你我这样的业务人员能用最自然的语言指挥AI高效、准确地完成那些重复、繁琐但又至关重要的数据分析工作。2. 核心设计思路为什么传统的AI提示词会失败在深入介绍项目细节前我们先拆解一下为什么直接让AI处理Excel需求容易“翻车”。理解了这些痛点你才能明白excel-skill每一个设计背后的用意。2.1 AI处理Excel的三大典型“幻觉”公式参数记忆偏差AI对Excel数百个函数的记忆是概率性的。当你问“怎么用VLOOKUP找数据”时它可能给出一个语法正确但参数含义模糊的例子比如VLOOKUP(A2, D:F, 3, FALSE)。对于老手知道第三个参数3是返回查找区域第3列的值。但对AI或新手它可能无法稳定地根据你的数据表结构动态判断这个3应该是多少。更复杂的情况如INDEX(MATCH(), MATCH())这类嵌套AI出错的概率会指数级上升。“字符串化”公式陷阱这是使用openpyxl或pandas进行Python自动化时最经典的坑。AI生成的代码可能是这样的from openpyxl import Workbook wb Workbook() ws wb.active ws[‘A3’] ‘SUM(A1:A2)’ # 注意这里赋值的是一个字符串 ‘SUM(A1:A2)’ wb.save(‘report.xlsx’)代码逻辑没错文件也能生成。但当你用Excel打开这个文件时A3单元格显示的就是文本“SUM(A1:A2)”而不是计算结果。因为openpyxl默认将公式作为字符串写入需要Excel应用程序手动触发一次计算或使用COM接口、LibreOffice命令行才能生效。绝大多数AI生成的代码都会忽略这个关键细节。脱离业务场景的通用答案当你对AI说“帮我做个销售分析仪表盘”它可能会生成一个包含折线图、柱状图的通用模板。但快消行业的销售分析核心是“达成率 vs 目标”、“渠道(RTM)深度”电商行业则关注“GMV漏斗”、“ROAS广告投入产出比”互联网SaaS看重“用户留存曲线”、“LTV/CAC用户生命周期价值/获客成本”。AI缺乏这些垂直领域的“常识”给出的方案往往流于表面无法直接套用。2.2 excel-skill的解决方案结构化知识 场景化模板基于以上痛点excel-skill没有选择去训练一个专门的AI模型而是采用了一种更务实、更可控的“增强”思路为AI提供一套精准的上下文Context。建立渐进式知识库Progressive Disclosure不是把整个Excel官方文档扔给AI而是按使用频率和场景将知识分层、切片。例如将最常用的20个公式如XLOOKUP,SUMIFS,FILTER及其典型业务场景用例如“按条件汇总销售额”、“查找最新价格”放在最前面。AI在回答问题时能优先从这些高频、正确的片段中检索大大降低了“幻觉”的概率。预置行业模板与数据模式项目内置了四大行业金融、快消、电商、互联网共16个核心模板。每个模板不仅仅是一个空的.xlsx文件而是由一个Python脚本generate_*.py生成的。这意味着可审计你可以直接看Python脚本了解模板的每一行数据、每一个公式、每一种样式是如何被构建出来的。可定制你可以修改脚本中的参数如公司名称、报表期间、KPI列表一键生成符合自己公司格式的模板。可教学这些脚本本身就是openpyxl的最佳实践案例AI可以通过学习这些脚本来理解如何正确构建复杂的Excel文件。提供“防呆”工具脚本项目包含像excel_lint.py这样的代码检查工具可以自动扫描AI生成的openpyxl代码识别出“公式字符串化”、“错误的单元格引用格式”等常见问题。还有recalc.py基于开源项目buildwithclaude的思路可以在文件保存后通过调用LibreOffice的命令行接口自动完成公式重算确保生成的Excel文件打开即用。核心心法这个项目的本质是将人类从业者的隐性知识哪些公式常用、业务模板长什么样、代码有哪些坑显性化、结构化然后喂给AI。让AI从一个需要猜谜的“实习生”变成一个拥有丰富工具箱和操作手册的“熟练工”。3. 四大行业模板深度解析与实战应用excel-skill的价值一半体现在这些精心设计的行业模板上。它们不是花架子而是提炼自真实业务场景的“生产力骨架”。下面我们逐一拆解看看每个模板到底解决了什么业务问题以及你该如何使用它。3.1 金融Finance从数据到估值模型金融分析对结构化和联动性要求极高。一个数字变动往往需要同步更新资产负债表、利润表、现金流量表三表以及一系列衍生比率。三表联动模板 (three_statements.xlsx)解决什么问题手工维护三张表之间的勾稽关系极易出错。例如利润表中的“净利润”需要链接到资产负债表的“未分配利润”和现金流量表的“经营活动现金流”调整项。模板设计该模板通过定义清晰的“输入假设”区域如收入增长率、毛利率、资本性支出让所有核心数据源头唯一。利润表计算出的净利润通过预设的公式自动填入资产负债表的所有者权益变动项并驱动现金流量表的间接法计算。所有链接使用明确的单元格命名和跨表引用而非硬编码的数字。给AI的提示示例“使用excel-skill的金融三表模板基于以下假设为我生成一份未来3年的财务预测模型年收入增长15%毛利率维持在40%营运资本占收入10%。”实操注意使用此模板时务必先在“Inputs”工作表填写所有蓝色标记的假设单元格。任何直接在其他表格手动输入数字的行为都会破坏公式联动。DCF估值模型 (dcf-valuation.xlsx)解决什么问题DCF现金流折现模型涉及自由现金流预测、加权平均资本成本WACC计算、终值估算等多个复杂步骤公式嵌套深容易检查。模板设计模板将流程模块化1) 历史财务数据输入2) 关键预测假设收入驱动因子、利润率、营运资本比例3) 自由现金流计算表4) WACC计算器包含债务成本、股权成本Beta值计算5) 折现结果与敏感性分析表。模板内置了数据验证确保假设输入在合理范围内如永续增长率通常不超过长期GDP增速。给AI的提示示例“参考DCF模板写一段openpyxl代码将WACC计算模块中的无风险利率从2.5%改为3.0%并重新运行整个估值计算。”3.2 快消FMCG聚焦渠道与执行快消行业的核心是“货”和“渠道”分析重点在于销售目标的达成、库存健康度以及促销活动的有效性。RTM渠道分析模板 (rtm-analysis.xlsx)解决什么问题快消企业有庞大的经销商网络需要分析不同渠道如现代渠道KA、传统渠道TT、电商EC的覆盖、销售效率和库存情况。模板设计模板以“渠道-产品-时间”三维度构建数据透视表。核心看板包括各渠道销售额占比与趋势、渠道铺货率门店数/目标门店数、单店产出、渠道库存周数DOI。大量使用条件格式中的色阶和数据条让健康度如库存周数过高或过低一目了然。给AI的提示示例“我有过去12个月分渠道的销售数据帮我用Power Query清洗后套用RTM分析模板生成一份渠道健康度报告。”促销活动ROI计算模板 (promotion-roi.xlsx)解决什么问题评估一次促销活动是赚了还是亏了不能只看销售额增长还要考虑促销折扣成本、额外物流费用、以及可能对正常售价销售的蚕食效应。模板设计模板区分了“增量销售”和“存量销售转移”。通过输入活动期间的销售数据、同期对比通常为活动前几周数据、促销折扣率、额外成本等自动计算增量毛利、ROI、以及销量提升中来自新客户的比例。使用了SUMIFS和AVERAGEIFS来灵活筛选活动期与非活动期数据。避坑指南计算促销ROI最大的坑是“基线Baseline”选择不合理。模板中预设了移动平均和同期对比两种基线计算方法并提示用户根据产品特性如是否有季节性进行选择。直接让AI套用时必须明确指定基线逻辑。3.3 电商E-commerce追踪流量与转化电商运营是数据驱动的典范每一个环节的转化率都直接影响最终的GMV成交总额。销售漏斗模板 (sales-funnel.xlsx)解决什么问题直观展示从用户“曝光”、“点击”、“加购”、“下单”到“支付”的转化过程定位流失最大的环节。模板设计模板采用双层结构。第一层是原始数据录入表按日期和渠道记录每个环节的绝对人数。第二层是分析看板自动计算各环节的转化率、环比/同比变化并用漏斗图和瀑布图可视化展示。关键环节如下单到支付的转化率设置了条件格式警报阈值如低于70%标红。给AI的提示示例“用excel-skill的电商漏斗模板生成一个可以输入每日数据、自动更新转化率看板的文件。要求看板顶部显示整体支付转化率并用切片器控制查看不同渠道的数据。”RFM用户分层模板 (rfm-segmentation.xlsx)解决什么问题将海量用户按最近一次消费Recency、消费频率Frequency、消费金额Monetary进行分层实现精准营销。模板设计模板核心是一个RFM计算引擎。用户只需输入包含用户ID、最近购买日期、购买次数、总金额的原始订单数据模板会自动1) 计算每个用户的R、F、M值2) 使用分位数如五分位将每个维度分为1-5分3) 根据RFM组合总分如555为最高价值用户给用户打标签如“重要价值用户”、“需挽留用户”。最后通过数据透视表统计各分层的用户数和销售额占比。实操心得RFM分层的核心在于分位数的划分标准。模板默认使用五分位法但对于用户量级差异巨大的业务如头部用户消费额极高建议采用聚类算法或手动定义阈值。你可以指导AI修改模板中的QUARTILE.INC或PERCENTILE.INC函数参数来调整分层逻辑。3.4 互联网Internet/SaaS关注增长与效率互联网产品关注用户生命周期和单位经济效益分析周期长维度复杂。留存曲线与同期群分析模板 (dau-mau-cohort.xlsx)解决什么问题分析不同时期如每周新增用户的留存情况评估产品迭代或运营活动对用户长期留存的影响。模板设计这是典型的“同期群分析”表格。横轴是用户生命周期第1天、第7天、第30天…纵轴是不同时期的新增用户群组。表格主体是留存百分比。模板使用条件格式中的色阶绿-黄-红直观展示留存健康度并自动绘制留存曲线图方便对比不同群组的表现。给AI的提示示例“我有一张用户登录日志表包含user_id,signup_date,login_date。帮我写一段Python脚本用pandas处理这份数据并输出符合留存分析模板格式的数据。”LTV/CAC计算模板 (ltv-cac.xlsx)解决什么问题量化一个用户在整个生命周期内能为公司带来多少价值LTV以及获取这个用户需要花费多少成本CAC。这是衡量增长健康度的核心指标。模板设计模板分为两大模块。LTV模块基于历史数据计算用户平均生命周期、月均贡献毛利并考虑折现率。CAC模块汇总市场、销售等所有获客相关成本除以对应时期的新增用户数。核心输出是LTV/CAC比值和回本周期。模板内置了敏感性分析表可以动态观察用户流失率、毛利率等关键假设变动对LTV/CAC的影响。重要提示LTV计算非常依赖对未来用户行为的预测。模板提供了两种常见方法基于历史留存曲线拟合的预测模型简单但可能不准和基于固定假设的简易计算。对于关键决策建议将此处计算的LTV作为一个参考基准而非绝对真理。指导AI使用时务必明确说明你采用的预测方法和核心假设。4. AI知识库与Python工具链的协同使用指南有了好模板还得让AI能正确地使用和生成它们。excel-skill的references/知识库和scripts/工具链就是为此而生。4.1 如何让AI调用正确的知识SKILL.md与渐进式披露项目的核心入口是SKILL.md文件。它本身是一个给AI如Cursor、Claude Code阅读的“路由手册”。其工作原理是根据用户问题的关键词动态加载最相关的知识片段。例如当你在Cursor中提问“帮我写个公式统计销售表中A部门在Q1的销售额总和。”Cursor内部的excel-skill插件会解析这个问题识别出关键词“公式”、“统计”、“部门”、“季度”。它会优先从references/01-formulas-cheatsheet.md中检索“按条件求和”相关的片段而不是去翻整个庞大的函数列表。它可能会找到并返回以下结构化的上下文## 多条件求和SUMIFS **场景**对满足多个条件的单元格求和。 **语法**SUMIFS(求和区域, 条件区域1, 条件1, [条件区域2, 条件2], ...) **示例**SUMIFS(C2:C100, A2:A100, “A部门”, B2:B100, “2024-1-1”, B2:B100, “2024-3-31”) **注意**所有条件区域必须与求和区域大小相同。日期条件需用引号包裹。然后AI基于这个精准的上下文生成正确的公式SUMIFS(销售额列, 部门列, “A部门”, 日期列, “”DATE(2024,1,1), 日期列, “”DATE(2024,3,31))。这种“渐进式披露”避免了信息过载极大提高了AI回答的准确率。references/08-excel-pitfalls.md是这个机制的灵魂它提前把“公式字符串化”、“VLOOKUP近似匹配的坑”、“透视表刷新后格式丢失”等高频问题及答案固化下来让AI在犯错前就被“打上预防针”。4.2 Python自动化脚本详解与避坑实践模板是用Python脚本生成的你也可以用这些脚本和工具来构建自己的自动化流程。excel_lint.py你的AI代码审查员这个脚本的作用是静态检查openpyxl代码。运行方式python scripts/excel_lint.py your_script.py它会扫描代码检查诸如是否将公式字符串直接赋值给了单元格如ws[‘A1’] “SUM(B1:B10)”并建议使用ws[‘A1’].value ‘SUM(B1:B10)’或更好的ws[‘A1’] ‘SUM(B1:B10)’openpyxl较新版本已支持。是否在写入公式后错误地使用了ws[‘A1’].value来读取结果此时读到的仍是公式字符串。是否遗漏了设置数字格式如‘#,##0.00’、日期格式等样式代码。 在让AI编写复杂的Excel生成脚本后先用excel_lint.py过一遍能避免很多低级错误。recalc.py解决公式计算的“最后一公里”这是从buildwithclaude项目fork并增强的工具。它的原理是调用本地安装的LibreOffice或OpenOffice的命令行接口以“无头模式”打开Excel文件强制重算所有公式然后保存。python scripts/recalc.py --input my_file_with_formulas.xlsx --output my_file_calculated.xlsx核心优势完全离线、免费不依赖微软昂贵的Office授权或复杂的COM接口win32com。生成的my_file_calculated.xlsx用任何Excel软件打开所有公式都已计算出结果。必须注意你的系统需要预先安装LibreOffice并将其安装目录如C:\Program Files\LibreOffice\program\添加到系统PATH环境变量中。这是该脚本能正常工作的前提。helpers/样式与逻辑的复用库helpers/styling.py里封装了定义单元格样式的函数比如apply_header_style(ws[‘A1’])会给A1单元格应用预设的标题样式加粗、居中、背景色。helpers/formulas.py里则有一些生成复杂公式字符串的工具函数比如generate_vlookup_formula(lookup_value, table_range, col_index)能确保生成的VLOOKUP公式语法绝对正确。 当AI需要生成带格式的报表时你可以直接提示它“参考excel-skill项目中helpers/styling.py的apply_currency_format函数为金额列添加千分位和人民币符号格式。”这比向AI描述“加粗、居中、蓝色背景、会计专用格式”要高效准确得多。5. 从零开始定制属于你自己的行业模板使用现成模板是第一步但真正的威力在于你能基于此快速定制和扩展。下面我以一个真实的场景为例展示如何利用excel-skill的框架为“在线教育”行业创建一个“课程完课率与学习效果分析”模板。场景你在一家在线教育公司需要分析不同课程、不同批次学员的完课率、平均学习时长、以及课后测验得分并关联到最终的课程满意度。步骤一借鉴现有模板结构打开templates/internet/目录下的dau-mau-cohort.xlsx和其生成脚本generate_internet/dau_mau_cohort.py。你会发现脚本的结构非常清晰导入openpyxl和自定义helpers。创建Workbook定义工作表如Raw Data,Cohort Analysis。在Raw Data工作表写入表头和一些示例数据。在Cohort Analysis工作表构建一个二维矩阵同期群 vs 时间周期并填入计算公式。应用样式标题、数字格式、条件格式。保存文件。步骤二设计你的数据模型我们的新模板需要以下数据维度课程ID、学员批次如“2024春招”、学员ID。指标是否完课是/否、总学习时长分钟、测验平均分、满意度评分1-5分。步骤三编写生成脚本在scripts/下新建generate_education/目录创建course_completion_analysis.py。# 脚本结构示例核心部分 import openpyxl from openpyxl.styles import Font, Alignment, PatternFill, Border, Side from openpyxl.utils import get_column_letter from helpers.styling import apply_header_style, apply_percentage_format # 复用样式库 def create_course_analysis_template(output_path‘course_analysis.xlsx’): wb openpyxl.Workbook() # 1. 创建数据输入表 ws_data wb.active ws_data.title “原始数据” headers [“课程ID”, “批次”, “学员ID”, “是否完课”, “学习时长(分钟)”, “测验均分”, “满意度”] for col, header in enumerate(headers, 1): cell ws_data.cell(row1, columncol, valueheader) apply_header_style(cell) # 使用helper ws_data.column_dimensions[get_column_letter(col)].width 15 # 2. 创建分析看板表 ws_dashboard wb.create_sheet(title“分析看板”) # 这里可以构建一个透视表结构行是课程和批次列是完课率、平均时长、平均分、平均满意度 # 使用公式引用原始数据表例如COUNTIFS(原始数据!$A:$A, $A2, 原始数据!$B:$B, $B2, 原始数据!$D:$D, “是”)/COUNTIFS(原始数据!$A:$A, $A2, 原始数据!$B:$B, $B2) # 应用条件格式将完课率低于60%的标红 # 3. 保存 wb.save(output_path) print(f“模板已生成: {output_path}”) if __name__ ‘__main__’: create_course_analysis_template()步骤四为AI更新知识库在references/目录下你可以考虑新增或修改一个文档比如在01-formulas-cheatsheet.md的“统计与分析”部分增加针对教育场景的公式用例### 教育数据分析常用公式 - **完课率计算**COUNTIFS(课程列, 特定课程, 批次列, 特定批次, 完课列, “是”) / COUNTIFS(课程列, 特定课程, 批次列, 特定批次) - **满意度与成绩相关性简易**可使用CORREL(满意度分数区域, 测验分数区域)计算相关系数。步骤五集成到工作流将你的新脚本路径和新增的知识点更新到项目的SKILL.md文件中增加一个路由规则。这样当你下次对AI说“用excel-skill帮我生成一个在线教育课程完课率分析模板”AI就能找到你刚刚创建的这个定制化资源。通过这个流程你将一个具体的业务需求快速沉淀为一个可复用、可被AI理解的标准模板和知识片段。这正是excel-skill项目希望促成的良性循环你用AI提高效率同时也在为AI和后来的同事积累可复用的知识资产。6. 常见问题与故障排查实录在实际使用和推广这个项目的过程中我和同事们踩过不少坑。这里把最常见的问题和解决方案记录下来希望能帮你节省大量调试时间。6.1 环境与安装问题Q1: 运行pip install -r requirements.txt时提示某些包安装失败尤其是openpyxl或pandas。原因通常是Python环境问题、网络问题或缺少编译依赖在Linux/macOS上。解决确认Python版本建议使用Python 3.8及以上版本。python --version检查。使用虚拟环境强烈建议使用venv或conda创建独立环境避免包冲突。# 使用 venv python -m venv excel_env # Windows激活 excel_env\Scripts\activate # macOS/Linux激活 source excel_env/bin/activate # 然后在虚拟环境中安装 pip install -r requirements.txt使用镜像源国内用户可使用清华、阿里云等镜像加速。pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple系统依赖在Ubuntu/Debian上可能需要先安装python3-dev等开发包sudo apt-get install python3-dev。Q2: 运行recalc.py时报错提示找不到soffice命令。原因系统未安装LibreOffice或未将其添加到PATH环境变量。解决安装LibreOffice从官网 https://www.libreoffice.org/ 下载并安装。添加PATHWindows将LibreOffice的安装路径如C:\Program Files\LibreOffice\program\添加到系统环境变量PATH中然后重启命令行。macOS通常安装后会自动添加。如果没有可以手动在~/.zshrc或~/.bash_profile中添加export PATH“/Applications/LibreOffice.app/Contents/MacOS:$PATH”然后执行source ~/.zshrc。Linux使用包管理器安装如sudo apt install libreoffice通常会自动配置。验证安装在命令行输入soffice --version能显示版本号即表示成功。6.2 AI集成与使用问题Q3: 在Cursor/Claude Code中如何让AI正确使用excel-skill的知识原因AI需要被“告知”或“引导”到特定的上下文。解决明确引用在提问时开头就指明使用excel-skill。例如“使用excel-skill项目中的知识帮我写一个公式计算过去7天的移动平均销售额。”引用具体文件对于复杂问题可以更具体。例如“参考excel-skill/references/05-openpyxl-python.md中关于设置单元格样式的部分用openpyxl给表格标题行添加蓝色背景和加粗字体。”提供错误示例如果AI给出了错误代码把错误代码和期望结果一起给它并提示它参考知识库。例如“你刚才生成的openpyxl代码公式没有被计算。请参考excel-skill/references/08-excel-pitfalls.md中的‘公式字符串化’部分修正这个问题。”Q4: AI生成的公式在模板里不工作显示#NAME?或#VALUE!错误。原因通常是公式引用了不存在的函数名本地Excel版本不支持如XLOOKUP在旧版没有、区域引用错误或参数类型不匹配。解决检查函数兼容性确认你的Excel版本。如果用的是较旧的Excel如2016让AI使用兼容函数如用INDEX/MATCH替代XLOOKUP用IFERROR替代IFNA。检查区域引用确保SUMIFS、VLOOKUP等函数的区域大小一致且使用绝对引用$A$1:$A$100或混合引用$A1:A$100避免公式拖动时错位。使用模板内建函数尽量让AI使用模板中已经定义好的命名区域或表格结构化引用这比直接使用A1:B100这样的硬编码更可靠。6.3 模板与脚本使用问题Q5: 我修改了模板生成脚本里的参数但生成的文件格式乱了。原因openpyxl在插入或删除行/列后原有的合并单元格、公式引用、图表数据源范围可能不会自动更新导致错位。解决先规划后修改在修改脚本前先在Excel里手动模拟一下你想要的结构变化观察哪些部分公式、图表、条件格式会受影响。分段测试不要一次性修改所有参数。先改数据行数测试再改列数测试。每次生成后都打开文件检查关键部分。手动调整样式代码openpyxl的样式是应用到具体的单元格对象上的。如果你动态增加了行新增的行是没有样式的。需要在脚本中添加逻辑将标题行、总计行的样式循环应用到新的行上。利用Helpers项目中的helpers/styling.py提供了apply_table_style等函数可以帮助你更稳健地应用样式。Q6: 生成的Excel文件用WPS打开部分图表或格式显示不正常。原因WPS Office对微软Excel的某些高级特性如特定的图表类型、条件格式规则、自定义数字格式支持可能存在细微差异。解决使用兼容模式在脚本中尽量使用最通用的图表类型如柱状图、折线图、饼图避免使用太新的图表子类型。简化条件格式避免使用过于复杂的公式作为条件格式的条件。优先使用“基于单元格值”的简单规则如大于、小于、介于。测试验证如果你的用户主要使用WPS那么在生成模板后务必用WPS打开进行一次完整的测试确保所有核心功能计算、排序、筛选、图表都正常工作。将发现的不兼容点记录在案并反馈到项目的issues中或自己修改脚本以规避。Q7: 数据量很大时用Python脚本生成Excel非常慢。原因openpyxl在逐个单元格写入数据时I/O开销很大。另外如果工作表中有大量复杂的公式或条件格式也会降低写入和打开速度。解决批量写入使用ws.append(rows)方法一次性写入多行列表数据而不是用循环ws.cell(rowi, columnj, valuedata)。禁用计算和公式在写入大量数据时可以设置wb openpyxl.Workbook(data_onlyFalse, keep_vbaFalse)并在写入完成后再统一添加公式。对于最终文件如果不需要保留公式可以用data_onlyTrue模式打开并保存这样只保留计算结果文件会小很多。考虑pandasopenpyxl组合对于纯粹的数据导出先用pandas.DataFrame处理数据然后用pandas.ExcelWriter配合openpyxl引擎写入效率更高。但要注意pandas直接写入的公式同样是字符串且对复杂格式的支持不如直接操作openpyxl灵活。这需要根据场景权衡。