如何使用 Python 设置 Excel 单元格数字格式

📅 2026/6/30 6:02:56
如何使用 Python 设置 Excel 单元格数字格式
、环境准备1.1 库安装通过 pip 安装免费版本pip install spire.xls.free安装完成后在 Python 脚本中导入相关模块即可使用from spire.xls import * from spire.xls.common import *1.2 核心概念Excel 的数字格式作用于数值型数据仅改变显示外观不改变单元格的实际存储值。设置格式涉及两个核心属性NumberValue写入单元格的原始数值必须为数值类型NumberFormat格式代码字符串定义数值的显示规则注意若通过Text属性写入数字字符串数字格式将不会生效。必须使用NumberValue赋值才能保证格式正确应用。二、常用数字格式分类与代码Excel 数字格式代码遵循四段式结构正数格式;负数格式;零值格式;文本格式各段用分号分隔。实际使用中可根据需求省略部分段落。以下分类介绍高频场景。2.1 常规数值与小数位数控制小数点后的保留位数以及是否显示千分位分隔符。格式代码原始值显示效果说明01234.561235整数四舍五入0.001234.51234.50固定两位小数#,##012345671,234,567千分位分隔无小数#,##0.001234.5671,234.57千分位 两位小数代码示例sheet.Range[D2].NumberValue 1234567.89 sheet.Range[D2].NumberFormat #,##0.002.2 货币格式在数值前添加货币符号通常配合千分位与小数位使用。格式代码显示效果¥#,##0.00¥1,234.56$#,##0.00$1,234.56€ #,##0.00€ 1,234.56代码示例sheet.Range[D4].NumberValue 9999.99 sheet.Range[D4].NumberFormat ¥#,##0.002.3 百分比格式将小数乘以 100 后以百分比形式展示。格式代码原始值显示效果0%0.12312%0.00%0.1234512.35%代码示例sheet.Range[D6].NumberValue 0.12345 sheet.Range[D6].NumberFormat 0.00%2.4 日期与时间格式Excel 内部以序列值存储日期1900-01-01 对应数值 1通过格式代码转换为可读日期。格式代码原始值显示效果yyyy-mm-dd455662024-10-01yyyy年m月d日455662024年10月1日m/d/yyyy4556610/1/2024hh:mm:ss0.62515:00:00h:mm AM/PM0.6253:00 PMyyyy-mm-dd hh:mm45566.6252024-10-01 15:00代码示例sheet.Range[D8].NumberValue 45566 sheet.Range[D8].NumberFormat yyyy-mm-dd sheet.Range[D9].NumberValue 0.625 sheet.Range[D9].NumberFormat hh:mm:ss2.5 科学计数法适用于极大或极小数值的紧凑展示。格式代码原始值显示效果0.00E0012345671.23E060.00E-000.00001231.23E-052.6 分数格式以分数形式显示小数。格式代码原始值显示效果# ?/?0.753/4# ??/??0.3331/32.7 条件颜色格式根据数值正负自动显示不同颜色方括号内指定颜色名称。格式代码原始值显示效果[Green]#,##0;[Red]-#,##0正数绿色负数红色[Red]#,##0.00全部显示为红色代码示例sheet.Range[D12].NumberValue -1234.56 sheet.Range[D12].NumberFormat [Green]#,##0.00;[Red]-#,##0.002.8 自定义文本前缀/后缀在数值前后附加固定文本同时保持数值可计算性。文本需用双引号包裹。格式代码原始值显示效果合计#,##0 元5000合计5,000 元0 件120120 件三、完整示例代码以下示例在同一张工作表中集中演示多种数字格式效果from spire.xls import * from spire.xls.common import * # 创建工作簿 workbook Workbook() sheet workbook.Worksheets.get_Item(0) sheet.Name 数字格式示例 # 设置列宽 sheet.SetColumnWidth(2, 22) sheet.SetColumnWidth(3, 15) sheet.SetColumnWidth(4, 20) # 表头 sheet.Range[B2].Text 格式说明 sheet.Range[C2].Text 原始值 sheet.Range[D2].Text 显示结果 header_style sheet.Range[B2:D2].Style header_style.Font.IsBold True header_style.HorizontalAlignment HorizontalAlignType.Center # 示例数据与格式 examples [ (两位小数, 1234.567, 0.00), (千分位分隔, 1234567.89, #,##0.00), (人民币货币, 9999.99, ¥#,##0.00), (美元货币, 9999.99, $#,##0.00), (百分比两位, 0.12345, 0.00%), (日期格式, 45566, yyyy-mm-dd), (时间格式, 0.625, hh:mm:ss), (科学计数法, 1234567, 0.00E00), (正负分色, -1234.56, [Green]#,##0.00;[Red]-#,##0.00), (文本前缀, 5000, 合计#,##0 元), ] # 逐行写入 for i, (desc, value, fmt) in enumerate(examples, start3): sheet.Range[fB{i}].Text desc sheet.Range[fC{i}].NumberValue value sheet.Range[fC{i}].NumberFormat General sheet.Range[fD{i}].NumberValue value sheet.Range[fD{i}].NumberFormat fmt # 自动调整列宽 sheet.AllocatedRange.AutoFitColumns() # 保存文件 workbook.SaveToFile(number_format_demo.xlsx, ExcelVersion.Version2016) workbook.Dispose()运行后将生成number_format_demo.xlsx文件C 列为原始通用格式数值D 列为应用格式后的显示效果。四、格式代码语法规则4.1 占位符含义0数字占位符。若对应位无数字则显示 0强制补位。#数字占位符。若对应位无数字则不显示不补零。?数字占位符。用于对齐分数的小数点。.小数点位置标记。,千分位分隔符或数值缩放末尾逗号表示除以 1000。4.2 分段规则格式代码最多分为四段以分号分隔正数格式;负数格式;零值格式;文本格式只写一段应用于所有数值写两段第一段用于正数和零第二段用于负数写三段分别对应正、负、零写四段增加文本格式规则示例#,##0.00;[Red]-#,##0.00;-;含义正数正常显示千分位两位小数负数红色并带负号零值显示为短横线文本保持原样。五、注意事项与常见问题数值类型必须正确只有通过NumberValue写入的数值才能应用数字格式。若使用Text属性写入字符串形式的数字格式代码不会生效。格式代码区分区域设置部分格式符号如千分位、日期分隔符受系统区域设置影响。跨地区使用时建议采用标准格式代码。日期序列值基准Excel 默认以 1900-01-01 为序列值 1。设置日期格式前需确认数值对应的日期是否正确。免费版限制Free 版本存在工作表数量与行数限制适用于小型文件处理场景。大规模数据处理需评估是否满足业务需求。