Python代碼實(shí)現(xiàn)精確設(shè)置Excel單元格數(shù)字格式
在自動(dòng)化報(bào)表生成與數(shù)據(jù)處理場(chǎng)景中,數(shù)值的展示方式直接影響文檔的可讀性與專業(yè)性。千分位分隔、貨幣符號(hào)、百分比顯示、日期格式化等效果,均通過(guò) Excel 的數(shù)字格式機(jī)制實(shí)現(xiàn)。本文將介紹如何通過(guò) Python 代碼精確控制 Excel 單元格的數(shù)字顯示格式,示例基于 Free Spire.XLS for Python 免費(fèi)庫(kù)實(shí)現(xiàn)。
一、環(huán)境準(zhǔn)備
1.1 庫(kù)安裝
通過(guò) pip 安裝免費(fèi)版本:
pip install spire.xls.free
安裝完成后,在 Python 腳本中導(dǎo)入相關(guān)模塊即可使用:
from spire.xls import * from spire.xls.common import *
1.2 核心概念
Excel 的數(shù)字格式作用于數(shù)值型數(shù)據(jù),僅改變顯示外觀,不改變單元格的實(shí)際存儲(chǔ)值。設(shè)置格式涉及兩個(gè)核心屬性:
- NumberValue:寫(xiě)入單元格的原始數(shù)值(必須為數(shù)值類型)
- NumberFormat:格式代碼字符串,定義數(shù)值的顯示規(guī)則
注意:若通過(guò) Text 屬性寫(xiě)入數(shù)字字符串,數(shù)字格式將不會(huì)生效。必須使用 NumberValue 賦值,才能保證格式正確應(yīng)用。
二、常用數(shù)字格式分類與代碼
Excel 數(shù)字格式代碼遵循四段式結(jié)構(gòu):正數(shù)格式;負(fù)數(shù)格式;零值格式;文本格式,各段用分號(hào)分隔。實(shí)際使用中可根據(jù)需求省略部分段落。以下分類介紹高頻場(chǎng)景。
2.1 常規(guī)數(shù)值與小數(shù)位數(shù)
控制小數(shù)點(diǎn)后的保留位數(shù),以及是否顯示千分位分隔符。
| 格式代碼 | 原始值 | 顯示效果 | 說(shuō)明 |
|---|---|---|---|
0 | 1234.56 | 1235 | 整數(shù),四舍五入 |
0.00 | 1234.5 | 1234.50 | 固定兩位小數(shù) |
#,##0 | 1234567 | 1,234,567 | 千分位分隔,無(wú)小數(shù) |
#,##0.00 | 1234.567 | 1,234.57 | 千分位 + 兩位小數(shù) |
代碼示例:
sheet.Range["D2"].NumberValue = 1234567.89 sheet.Range["D2"].NumberFormat = "#,##0.00"
2.2 貨幣格式
在數(shù)值前添加貨幣符號(hào),通常配合千分位與小數(shù)位使用。
| 格式代碼 | 顯示效果 |
|---|---|
¥#,##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.00"
2.3 百分比格式
將小數(shù)乘以 100 后以百分比形式展示。
| 格式代碼 | 原始值 | 顯示效果 |
|---|---|---|
0% | 0.123 | 12% |
0.00% | 0.12345 | 12.35% |
代碼示例:
sheet.Range["D6"].NumberValue = 0.12345 sheet.Range["D6"].NumberFormat = "0.00%"
2.4 日期與時(shí)間格式
Excel 內(nèi)部以序列值存儲(chǔ)日期(1900-01-01 對(duì)應(yīng)數(shù)值 1),通過(guò)格式代碼轉(zhuǎn)換為可讀日期。
| 格式代碼 | 原始值 | 顯示效果 |
|---|---|---|
yyyy-mm-dd | 45566 | 2024-10-01 |
yyyy年m月d日 | 45566 | 2024年10月1日 |
m/d/yyyy | 45566 | 10/1/2024 |
hh:mm:ss | 0.625 | 15:00:00 |
h:mm AM/PM | 0.625 | 3:00 PM |
yyyy-mm-dd hh:mm | 45566.625 | 2024-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:ss"
2.5 科學(xué)計(jì)數(shù)法
適用于極大或極小數(shù)值的緊湊展示。
| 格式代碼 | 原始值 | 顯示效果 |
|---|---|---|
0.00E+00 | 1234567 | 1.23E+06 |
0.00E-00 | 0.0000123 | 1.23E-05 |
2.6 分?jǐn)?shù)格式
以分?jǐn)?shù)形式顯示小數(shù)。
| 格式代碼 | 原始值 | 顯示效果 |
|---|---|---|
# ?/? | 0.75 | 3/4 |
# ??/?? | 0.333 | 1/3 |
2.7 條件顏色格式
根據(jù)數(shù)值正負(fù)自動(dòng)顯示不同顏色,方括號(hào)內(nèi)指定顏色名稱。
| 格式代碼 | 原始值 | 顯示效果 |
|---|---|---|
[Green]#,##0;[Red]-#,##0 | 正數(shù)綠色,負(fù)數(shù)紅色 | |
[Red]#,##0.00 | 全部顯示為紅色 |
代碼示例:
sheet.Range["D12"].NumberValue = -1234.56 sheet.Range["D12"].NumberFormat = "[Green]#,##0.00;[Red]-#,##0.00"
2.8 自定義文本前綴/后綴
在數(shù)值前后附加固定文本,同時(shí)保持?jǐn)?shù)值可計(jì)算性。文本需用雙引號(hào)包裹。
| 格式代碼 | 原始值 | 顯示效果 |
|---|---|---|
"合計(jì):"#,##0" 元" | 5000 | 合計(jì):5,000 元 |
0" 件" | 120 | 120 件 |
三、完整示例代碼
以下示例在同一張工作表中集中演示多種數(shù)字格式效果:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建工作簿
workbook = Workbook()
sheet = workbook.Worksheets.get_Item(0)
sheet.Name = "數(shù)字格式示例"
# 設(shè)置列寬
sheet.SetColumnWidth(2, 22)
sheet.SetColumnWidth(3, 15)
sheet.SetColumnWidth(4, 20)
# 表頭
sheet.Range["B2"].Text = "格式說(shuō)明"
sheet.Range["C2"].Text = "原始值"
sheet.Range["D2"].Text = "顯示結(jié)果"
header_style = sheet.Range["B2:D2"].Style
header_style.Font.IsBold = True
header_style.HorizontalAlignment = HorizontalAlignType.Center
# 示例數(shù)據(jù)與格式
examples = [
("兩位小數(shù)", 1234.567, "0.00"),
("千分位分隔", 1234567.89, "#,##0.00"),
("人民幣貨幣", 9999.99, "¥#,##0.00"),
("美元貨幣", 9999.99, "$#,##0.00"),
("百分比兩位", 0.12345, "0.00%"),
("日期格式", 45566, "yyyy-mm-dd"),
("時(shí)間格式", 0.625, "hh:mm:ss"),
("科學(xué)計(jì)數(shù)法", 1234567, "0.00E+00"),
("正負(fù)分色", -1234.56, "[Green]#,##0.00;[Red]-#,##0.00"),
("文本前綴", 5000, '"合計(jì):"#,##0" 元"'),
]
# 逐行寫(xiě)入
for i, (desc, value, fmt) in enumerate(examples, start=3):
sheet.Range[f"B{i}"].Text = desc
sheet.Range[f"C{i}"].NumberValue = value
sheet.Range[f"C{i}"].NumberFormat = "General"
sheet.Range[f"D{i}"].NumberValue = value
sheet.Range[f"D{i}"].NumberFormat = fmt
# 自動(dòng)調(diào)整列寬
sheet.AllocatedRange.AutoFitColumns()
# 保存文件
workbook.SaveToFile("number_format_demo.xlsx", ExcelVersion.Version2016)
workbook.Dispose()運(yùn)行后將生成 number_format_demo.xlsx 文件,C 列為原始通用格式數(shù)值,D 列為應(yīng)用格式后的顯示效果。
四、格式代碼語(yǔ)法規(guī)則
4.1 占位符含義
0:數(shù)字占位符。若對(duì)應(yīng)位無(wú)數(shù)字則顯示 0,強(qiáng)制補(bǔ)位。#:數(shù)字占位符。若對(duì)應(yīng)位無(wú)數(shù)字則不顯示,不補(bǔ)零。?:數(shù)字占位符。用于對(duì)齊分?jǐn)?shù)的小數(shù)點(diǎn)。.:小數(shù)點(diǎn)位置標(biāo)記。,:千分位分隔符,或數(shù)值縮放(末尾逗號(hào)表示除以 1000)。
4.2 分段規(guī)則
格式代碼最多分為四段,以分號(hào)分隔:
正數(shù)格式;負(fù)數(shù)格式;零值格式;文本格式
- 只寫(xiě)一段:應(yīng)用于所有數(shù)值
- 寫(xiě)兩段:第一段用于正數(shù)和零,第二段用于負(fù)數(shù)
- 寫(xiě)三段:分別對(duì)應(yīng)正、負(fù)、零
- 寫(xiě)四段:增加文本格式規(guī)則
示例:#,##0.00;[Red]-#,##0.00;"-";@
含義:正數(shù)正常顯示千分位兩位小數(shù);負(fù)數(shù)紅色并帶負(fù)號(hào);零值顯示為短橫線;文本保持原樣。
五、注意事項(xiàng)與常見(jiàn)問(wèn)題
數(shù)值類型必須正確:只有通過(guò) NumberValue 寫(xiě)入的數(shù)值才能應(yīng)用數(shù)字格式。若使用 Text 屬性寫(xiě)入字符串形式的數(shù)字,格式代碼不會(huì)生效。
格式代碼區(qū)分區(qū)域設(shè)置:部分格式符號(hào)(如千分位、日期分隔符)受系統(tǒng)區(qū)域設(shè)置影響。跨地區(qū)使用時(shí)建議采用標(biāo)準(zhǔn)格式代碼。
日期序列值基準(zhǔn):Excel 默認(rèn)以 1900-01-01 為序列值 1。設(shè)置日期格式前需確認(rèn)數(shù)值對(duì)應(yīng)的日期是否正確。
免費(fèi)版限制:Free 版本存在工作表數(shù)量與行數(shù)限制,適用于小型文件處理場(chǎng)景。大規(guī)模數(shù)據(jù)處理需評(píng)估是否滿足業(yè)務(wù)需求。
格式繼承與覆蓋:單元格級(jí)別的 NumberFormat 設(shè)置會(huì)覆蓋列或行級(jí)別的默認(rèn)格式。批量設(shè)置時(shí),可對(duì)整個(gè) Range 統(tǒng)一賦值以提升效率。
六、總結(jié)
通過(guò) NumberFormat 屬性配合格式代碼,可以在 Python 中精確控制 Excel 單元格的數(shù)值顯示效果。掌握常用格式代碼與分段規(guī)則后,即可實(shí)現(xiàn)貨幣、百分比、日期、條件顏色等多種專業(yè)展示效果,滿足報(bào)表自動(dòng)化的各類排版需求。在實(shí)際項(xiàng)目中,建議將常用格式封裝為常量或配置項(xiàng),以提升代碼的可維護(hù)性與復(fù)用性。
以上就是Python代碼實(shí)現(xiàn)精確設(shè)置Excel單元格數(shù)字格式的詳細(xì)內(nèi)容,更多關(guān)于Python設(shè)置Excel單元格數(shù)字格式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python實(shí)現(xiàn)鎖定指定Excel單元格區(qū)域
- 使用Python合并與拆分Excel單元格的實(shí)用方法
- Python使用openpyxl從URL讀取Excel并獲取單元格樣式
- Python設(shè)置Excel單元格邊框樣式的完全指南
- 如何使用Python高效復(fù)制Excel?行、列、單元格
- Python基于PyQt5和openpyxl實(shí)現(xiàn)Excel單元格合并工具
- 使用Python實(shí)現(xiàn)高效復(fù)制Excel行列與單元格
- 利用Python自動(dòng)化實(shí)現(xiàn)Excel單元格數(shù)據(jù)驗(yàn)證
相關(guān)文章
解決python腳本中error: unrecognized arguments: True錯(cuò)誤
這篇文章主要介紹了解決python腳本中error: unrecognized arguments: True錯(cuò)誤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
使用Mixin設(shè)計(jì)模式進(jìn)行Python編程的方法講解
Mixin模式也可以看作是一種組合模式,綜合多個(gè)類的功能來(lái)產(chǎn)生一個(gè)類而不通過(guò)繼承來(lái)實(shí)現(xiàn),下面就來(lái)整理一下使用Mixin設(shè)計(jì)模式進(jìn)行Python編程的方法講解:2016-06-06
Python開(kāi)發(fā)教程之os.path的常用操作總結(jié)
這篇文章主要介紹了Python開(kāi)發(fā)教程之os.path的常用操作,os模塊最常用的功能之一就是文件和目錄操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-05-05
Python實(shí)現(xiàn)輕松處理兩行表頭Excel并可視化分析(附完整代碼)
在日常的數(shù)據(jù)處理中,我們經(jīng)常會(huì)遇到多級(jí)表頭的 Excel 文件,本文通過(guò)一個(gè)實(shí)際案例,帶你完整了解讀取 Excel ,整理多級(jí)表頭 ,提取庫(kù)存,銷量的數(shù)據(jù) ,繪圖可視化的完整步驟吧2025-11-11
使用Python實(shí)現(xiàn)視頻下載的多種方案
在數(shù)字時(shí)代,我們經(jīng)常需要下載視頻用于離線觀看或個(gè)人學(xué)習(xí),本文將介紹如何使用Python編寫(xiě)一個(gè)簡(jiǎn)單的視頻下載工具,不涉及任何特定視頻網(wǎng)站,而是聚焦于通用技術(shù)原理和實(shí)現(xiàn)方法,需要的朋友可以參考下2026-05-05
python通過(guò)apply使用元祖和列表調(diào)用函數(shù)實(shí)例
這篇文章主要介紹了python通過(guò)apply使用元祖和列表調(diào)用函數(shù),實(shí)例分析了python中apply方法的使用技巧,需要的朋友可以參考下2015-05-05
python中的對(duì)象拷貝示例 python引用傳遞
你想復(fù)制一個(gè)對(duì)象?因?yàn)樵赑ython中,無(wú)論你把對(duì)象做為參數(shù)傳遞,做為函數(shù)返回值,都是引用傳遞的2014-01-01

