使用Python設(shè)置Excel工作表的各項(xiàng)頁(yè)面屬性
在企業(yè)日常辦公中,Excel 報(bào)表的打印輸出是一項(xiàng)常見(jiàn)且重要的工作。無(wú)論是財(cái)務(wù)報(bào)表、銷(xiāo)售數(shù)據(jù)表還是項(xiàng)目進(jìn)度表,都需要在打印前進(jìn)行頁(yè)面設(shè)置,包括調(diào)整紙張大小、頁(yè)邊距、打印方向、打印區(qū)域等。手動(dòng)調(diào)整這些設(shè)置不僅耗時(shí),而且在處理大量報(bào)表時(shí)容易出現(xiàn)遺漏或設(shè)置不一致的問(wèn)題。通過(guò) Python 編程實(shí)現(xiàn) Excel 頁(yè)面設(shè)置的自動(dòng)化,可以確保所有報(bào)表具有統(tǒng)一的打印格式,大幅提升工作效率。
本文將使用 Free Spire.XLS for Python 展示如何通過(guò)代碼設(shè)置 Excel 工作表的各項(xiàng)頁(yè)面屬性,包括紙張大小、頁(yè)邊距、打印方向、打印區(qū)域、打印標(biāo)題、縮放比例等,幫助你實(shí)現(xiàn)報(bào)表打印布局的自動(dòng)化配置。
1. 環(huán)境準(zhǔn)備與庫(kù)安裝
首先需要安裝 Free Spire.XLS for Python:
pip install spire.xls.free
安裝完成后,我們可以開(kāi)始創(chuàng)建 Excel 工作簿并進(jìn)行頁(yè)面設(shè)置。下面是一個(gè)創(chuàng)建 Excel 文件并設(shè)置基本頁(yè)面屬性的簡(jiǎn)單示例:
from spire.xls import Workbook, PaperSizeType, PageOrientationType
from spire.xls.common import *
# 創(chuàng)建一個(gè)新的工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "銷(xiāo)售報(bào)表"
# 獲取 PageSetup 對(duì)象
pageSetup = sheet.PageSetup
# 設(shè)置紙張大小為 A4
pageSetup.PaperSize = PaperSizeType.PaperA4
# 設(shè)置頁(yè)面方向?yàn)闄M向
pageSetup.Orientation = PageOrientationType.Landscape
# 保存文件
workbook.SaveToFile("SalesReport.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("Excel 文件已創(chuàng)建并設(shè)置頁(yè)面屬性:SalesReport.xlsx")說(shuō)明:PageSetup 對(duì)象是 Excel 工作表頁(yè)面設(shè)置的核心對(duì)象,通過(guò)它可以訪問(wèn)和設(shè)置所有與打印相關(guān)的屬性。這里我們?cè)O(shè)置了 A4 紙張和橫向打印方向,這是報(bào)表打印中最常用的配置。
2. 設(shè)置主要頁(yè)面屬性
在實(shí)際工作中,報(bào)表的頁(yè)面設(shè)置通常包括紙張大小、打印方向、頁(yè)邊距、打印區(qū)域、打印標(biāo)題等核心屬性。下面通過(guò)一個(gè)綜合示例展示如何設(shè)置這些主要屬性。
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "季度銷(xiāo)售報(bào)表"
# 添加示例數(shù)據(jù)
headers = ["地區(qū)", "產(chǎn)品", "銷(xiāo)售額(萬(wàn)元)", "利潤(rùn)率"]
for col, header in enumerate(headers, start=1):
sheet.Range[1, col].Text = header
sales_data = [
["華東", "筆記本電腦", 120, "15%"],
["華東", "平板電腦", 85, "12%"],
["華北", "筆記本電腦", 95, "13%"],
["華北", "平板電腦", 70, "10%"],
["華南", "筆記本電腦", 110, "14%"],
["華南", "平板電腦", 90, "11%"],
]
for row, data in enumerate(sales_data, start=2):
for col, value in enumerate(data, start=1):
sheet.Range[row, col].Value = str(value)
# 獲取 PageSetup 對(duì)象
pageSetup = sheet.PageSetup
# 1. 設(shè)置紙張大小為 A4
pageSetup.PaperSize = PaperSizeType.PaperA4
# 2. 設(shè)置打印方向?yàn)闄M向(適合寬表格)
pageSetup.Orientation = PageOrientationType.Landscape
# 3. 設(shè)置頁(yè)邊距(單位:英寸)
pageSetup.TopMargin = 1.5 # 上邊距
pageSetup.BottomMargin = 1.5 # 下邊距
pageSetup.LeftMargin = 1.0 # 左邊距
pageSetup.RightMargin = 1.0 # 右邊距
# 4. 設(shè)置頁(yè)眉頁(yè)腳邊距
pageSetup.HeaderMarginInch = 0.5 # 頁(yè)眉邊距
pageSetup.FooterMarginInch = 0.5 # 頁(yè)腳邊距
# 5. 設(shè)置打印區(qū)域(僅打印前4行數(shù)據(jù))
pageSetup.PrintArea = "A1:D5"
# 6. 設(shè)置打印標(biāo)題行(第1行作為標(biāo)題行,在每頁(yè)重復(fù))
pageSetup.PrintTitleRows = "$1:$1"
# 7. 設(shè)置頁(yè)面居中
pageSetup.CenterHorizontally = True # 水平居中
pageSetup.CenterVertically = True # 垂直居中
# 8. 設(shè)置縮放:將內(nèi)容縮放到一頁(yè)寬和一頁(yè)高
pageSetup.FitToPagesWide = 1
pageSetup.FitToPagesTall = 1
# 9. 設(shè)置頁(yè)眉頁(yè)腳
# 設(shè)置左頁(yè)眉:包含公司名稱(chēng),字體為 微軟雅黑,字號(hào)為 12
pageSetup.LeftHeader = "&\"微軟雅黑\"&12 季度銷(xiāo)售報(bào)表"
# 設(shè)置中頁(yè)腳:包含頁(yè)碼信息
pageSetup.CenterFooter = "第 &P 頁(yè),共 &N 頁(yè)"
# 設(shè)置右頁(yè)腳:包含打印日期
pageSetup.RightFooter = "打印日期:&D"
# 自動(dòng)調(diào)整列寬
sheet.Range.AutoFitColumns()
workbook.SaveToFile("SalesReport_PageSetup.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("主要頁(yè)面屬性設(shè)置完成:SalesReport_PageSetup.xlsx")工作表預(yù)覽:

說(shuō)明:
- 紙張大小與方向:
PaperSize設(shè)置紙張規(guī)格(A3、A4、A5、Letter 等),Orientation設(shè)置打印方向(橫向或縱向)。對(duì)于包含多列的寬表格,橫向打印可以避免內(nèi)容被截?cái)唷?/li> - 頁(yè)邊距:通過(guò)
TopMargin、BottomMargin、LeftMargin、RightMargin精確控制內(nèi)容區(qū)域與紙張邊緣的距離,單位為英寸。HeaderMarginInch和FooterMarginInch分別控制頁(yè)眉和頁(yè)腳與內(nèi)容區(qū)域的距離。 - 打印區(qū)域:通過(guò)
PrintArea指定需要打印的單元格范圍,格式為標(biāo)準(zhǔn)的 Excel 區(qū)域引用,如"A1:D5"表示從 A1 到 D5 的矩形區(qū)域。 - 打印標(biāo)題:
PrintTitleRows用于設(shè)置在每頁(yè)重復(fù)打印的行,格式為"$行號(hào):$行號(hào)",例如"$1:$1"表示第1行。這對(duì)于跨頁(yè)的長(zhǎng)表格特別有用,確保每頁(yè)都有表頭信息。 - 頁(yè)面居中與縮放:
CenterHorizontally和CenterVertically分別控制內(nèi)容在頁(yè)面上的水平和垂直居中。FitToPagesWide和FitToPagesTall用于設(shè)置打印內(nèi)容縮放到指定的頁(yè)數(shù),例如都設(shè)置為 1 表示將所有內(nèi)容縮放到一頁(yè)中打印。
頁(yè)眉頁(yè)腳:通過(guò) LeftHeader、CenterHeader、RightHeader 設(shè)置頁(yè)眉的左、中、右部分,通過(guò) LeftFooter、CenterFooter、RightFooter 設(shè)置頁(yè)腳的左、中、右部分。頁(yè)眉頁(yè)腳支持特殊代碼:
&P:當(dāng)前頁(yè)碼&N:總頁(yè)數(shù)&D:當(dāng)前日期&T:當(dāng)前時(shí)間&\"字體名稱(chēng)\"&字號(hào):設(shè)置字體和字號(hào)&B:加粗&I:斜體
3. 設(shè)置其他打印選項(xiàng)
除了基本的頁(yè)面設(shè)置,還可以配置網(wǎng)格線打印、行列標(biāo)題打印、打印質(zhì)量等高級(jí)選項(xiàng)。
from spire.xls import Workbook, PrintCommentType, PrintErrorsType
from spire.xls.common import *
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "數(shù)據(jù)分析表"
# 添加示例數(shù)據(jù)
headers = ["指標(biāo)", "數(shù)值", "單位"]
for col, header in enumerate(headers, start=1):
sheet.Range[1, col].Text = header
data = [
["總銷(xiāo)售額", 150000, "元"],
["平均訂單額", 2500, "元"],
["客戶(hù)數(shù)量", 1200, "人"],
["轉(zhuǎn)化率", 0.15, "%"],
]
for row, row_data in enumerate(data, start=2):
for col, value in enumerate(row_data, start=1):
if isinstance(value, str):
sheet.Range[row, col].Value = value
else:
sheet.Range[row, col].NumberValue = value
# 獲取 PageSetup 對(duì)象
pageSetup = sheet.PageSetup
# 設(shè)置打印網(wǎng)格線
pageSetup.IsPrintGridlines = True
# 設(shè)置打印行列標(biāo)題
pageSetup.IsPrintHeadings = True
# 設(shè)置黑白打印模式
pageSetup.BlackAndWhite = True
# 設(shè)置打印質(zhì)量(草稿模式)
pageSetup.Draft = True
# 設(shè)置打印批注方式
pageSetup.PrintComments = PrintCommentType.InPlace
# 設(shè)置錯(cuò)誤值打印方式
pageSetup.PrintErrors = PrintErrorsType.NA
# 自動(dòng)調(diào)整列寬
sheet.Range.AutoFitColumns()
workbook.SaveToFile("DataAnalysis_PrintOptions.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("其他打印選項(xiàng)設(shè)置完成:DataAnalysis_PrintOptions.xlsx")工作表預(yù)覽:

說(shuō)明:
IsPrintGridlines:是否打印網(wǎng)格線IsPrintHeadings:是否打印行列標(biāo)題BlackAndWhite:是否以黑白模式打印Draft:是否以草稿質(zhì)量打印(加快打印速度)PrintComments:批注打印方式(InPlace表示在原位置打?。?/li>PrintErrors:錯(cuò)誤值打印方式(NA表示打印為 N/A)
4. 關(guān)鍵類(lèi)與方法解析
在前面的章節(jié)中,我們展示了如何使用 Free Spire.XLS for Python 設(shè)置 Excel 工作表的各種頁(yè)面屬性。從技術(shù)實(shí)現(xiàn)角度來(lái)看,頁(yè)面設(shè)置的核心流程可以總結(jié)為以下幾個(gè)關(guān)鍵步驟:
Python Excel 頁(yè)面設(shè)置步驟總結(jié)
- 創(chuàng)建或加載工作簿使用
Workbook()創(chuàng)建新工作簿,或使用LoadFromFile()加載現(xiàn)有文件。 - 獲取 PageSetup 對(duì)象通過(guò)
sheet.PageSetup獲取工作表的頁(yè)面設(shè)置對(duì)象,這是所有頁(yè)面屬性配置的入口。 - 設(shè)置頁(yè)面基本屬性包括紙張大小(
PaperSize)、打印方向(Orientation)、頁(yè)邊距(TopMargin、BottomMargin、LeftMargin、RightMargin)等。 - 配置打印區(qū)域與標(biāo)題設(shè)置打印區(qū)域(
PrintArea)、打印標(biāo)題行(PrintTitleRows)、打印標(biāo)題列(PrintTitleColumns)。 - 設(shè)置頁(yè)面布局選項(xiàng)配置頁(yè)面居中(
CenterHorizontally、CenterVertically)、縮放比例(FitToPagesWide、FitToPagesTall)。 - 配置高級(jí)打印選項(xiàng)設(shè)置網(wǎng)格線打印、行列標(biāo)題打印、黑白模式、打印質(zhì)量等。
- 保存文件使用
SaveToFile()保存設(shè)置后的 Excel 文件。
關(guān)鍵類(lèi)、方法與屬性
| 類(lèi) / 方法 / 屬性 | 說(shuō)明 |
|---|---|
Workbook | Excel 工作簿對(duì)象,支持創(chuàng)建、加載和保存文件 |
Workbook.LoadFromFile() | 從本地文件加載 Excel 工作簿 |
Workbook.SaveToFile() | 保存 Excel 文件到指定路徑 |
Worksheet | 表示單個(gè)工作表,是操作數(shù)據(jù)和頁(yè)面設(shè)置的主體對(duì)象 |
sheet.PageSetup | 獲取工作表的頁(yè)面設(shè)置對(duì)象 |
pageSetup.PaperSize | 設(shè)置紙張大小(A3、A4、A5、Letter 等) |
pageSetup.Orientation | 設(shè)置打印方向(橫向或縱向) |
pageSetup.TopMargin | 設(shè)置上邊距(單位:英寸) |
pageSetup.BottomMargin | 設(shè)置下邊距(單位:英寸) |
pageSetup.LeftMargin | 設(shè)置左邊距(單位:英寸) |
pageSetup.RightMargin | 設(shè)置右邊距(單位:英寸) |
pageSetup.HeaderMarginInch | 設(shè)置頁(yè)眉邊距(單位:英寸) |
pageSetup.FooterMarginInch | 設(shè)置頁(yè)腳邊距(單位:英寸) |
pageSetup.PrintArea | 設(shè)置打印區(qū)域(如 "A1:D10") |
pageSetup.PrintTitleRows | 設(shè)置打印標(biāo)題行(如 "$1:$1") |
pageSetup.PrintTitleColumns | 設(shè)置打印標(biāo)題列(如 "$A:$A") |
pageSetup.CenterHorizontally | 設(shè)置頁(yè)面水平居中 |
pageSetup.CenterVertically | 設(shè)置頁(yè)面垂直居中 |
pageSetup.FitToPagesWide | 設(shè)置縮放到的頁(yè)寬數(shù) |
pageSetup.FitToPagesTall | 設(shè)置縮放到的頁(yè)高數(shù) |
pageSetup.LeftHeader | 設(shè)置左頁(yè)眉內(nèi)容 |
pageSetup.CenterHeader | 設(shè)置中頁(yè)眉內(nèi)容 |
pageSetup.RightHeader | 設(shè)置右頁(yè)眉內(nèi)容 |
pageSetup.LeftFooter | 設(shè)置左頁(yè)腳內(nèi)容 |
pageSetup.CenterFooter | 設(shè)置中頁(yè)腳內(nèi)容 |
pageSetup.RightFooter | 設(shè)置右頁(yè)腳內(nèi)容 |
pageSetup.IsPrintGridlines | 是否打印網(wǎng)格線 |
pageSetup.IsPrintHeadings | 是否打印行列標(biāo)題 |
pageSetup.BlackAndWhite | 是否黑白打印 |
pageSetup.Draft | 是否草稿質(zhì)量打印 |
pageSetup.PrintComments | 批注打印方式 |
pageSetup.PrintErrors | 錯(cuò)誤值打印方式 |
通過(guò)理解上述關(guān)鍵類(lèi)、方法和屬性,你可以靈活地配置 Excel 工作表的各種頁(yè)面設(shè)置,并根據(jù)實(shí)際需求進(jìn)行精細(xì)定制。掌握這些技術(shù)細(xì)節(jié),能讓你在實(shí)際項(xiàng)目中快速生成格式統(tǒng)一、打印效果專(zhuān)業(yè)的 Excel 報(bào)表,同時(shí)保持代碼簡(jiǎn)潔和可維護(hù)性。
總結(jié)
本文以實(shí)際業(yè)務(wù)場(chǎng)景為例,展示了如何使用 Free Spire.XLS for Python 設(shè)置 Excel 工作表的各項(xiàng)頁(yè)面屬性,包括紙張大小、頁(yè)邊距、打印方向、打印區(qū)域、打印標(biāo)題、頁(yè)面居中、縮放比例、頁(yè)眉頁(yè)腳以及高級(jí)打印選項(xiàng)等。通過(guò)編程方式配置頁(yè)面設(shè)置,不僅避免了手動(dòng)操作的繁瑣和易錯(cuò)問(wèn)題,還能確保所有報(bào)表具有統(tǒng)一的打印格式,特別適合批量處理和自動(dòng)化報(bào)表生成場(chǎng)景。
掌握這一技能后,你可以將報(bào)表的頁(yè)面設(shè)置完全自動(dòng)化,從而節(jié)省時(shí)間,提高效率,并確保打印輸出的專(zhuān)業(yè)性和一致性。結(jié)合 Free Spire.XLS 的其他功能,如數(shù)據(jù)寫(xiě)入、格式設(shè)置、圖表創(chuàng)建等,可以進(jìn)一步打造智能化的 Excel 自動(dòng)化工作流,讓企業(yè)的報(bào)表處理工作更加高效和規(guī)范。
以上就是使用Python設(shè)置Excel工作表的各項(xiàng)頁(yè)面屬性的詳細(xì)內(nèi)容,更多關(guān)于Python設(shè)置Excel表頁(yè)面屬性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python Django請(qǐng)求和響應(yīng)對(duì)象詳解
這篇文章主要給大家介紹了關(guān)于django的請(qǐng)求和響應(yīng)對(duì)象,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-11-11
Python opencv相機(jī)標(biāo)定實(shí)現(xiàn)原理及步驟詳解
這篇文章主要介紹了Python opencv相機(jī)標(biāo)定實(shí)現(xiàn)原理及步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
PyQt5+pycharm開(kāi)發(fā)環(huán)境搭建的實(shí)現(xiàn)步驟(圖文)
本文針對(duì)創(chuàng)建PyQt運(yùn)行環(huán)境+PyCharm開(kāi)發(fā)環(huán)境的過(guò)程進(jìn)行記錄,文中通過(guò)圖片示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
python爬蟲(chóng)入門(mén)教程--正則表達(dá)式完全指南(五)
要想做爬蟲(chóng),不可避免的要用到正則表達(dá)式,如果是簡(jiǎn)單的字符串處理,類(lèi)似于split,substring等等就足夠了,可是涉及到比較復(fù)雜的匹配,當(dāng)然是正則的天下,下面這篇文章主要給大家介紹了python爬蟲(chóng)之正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下。2017-05-05
使用keras根據(jù)層名稱(chēng)來(lái)初始化網(wǎng)絡(luò)
這篇文章主要介紹了使用keras根據(jù)層名稱(chēng)來(lái)初始化網(wǎng)絡(luò),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Jmeter調(diào)用Python腳本實(shí)現(xiàn)參數(shù)互相傳遞的實(shí)現(xiàn)
這篇文章主要介紹了Jmeter調(diào)用Python腳本實(shí)現(xiàn)參數(shù)互相傳遞的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python巧用SnowNLP實(shí)現(xiàn)生成srt字幕文件
SnowNLP是一個(gè)可以方便的處理中文文本內(nèi)容的python類(lèi)庫(kù),本文主要為大家詳細(xì)介紹了Python如何巧用SnowNLP實(shí)現(xiàn)將一段話(huà)一鍵生成srt字幕文件,感興趣的可以了解下2024-01-01
利用python讀取YUV文件 轉(zhuǎn)RGB 8bit/10bit通用
今天小編就為大家分享一篇利用python讀取YUV文件 轉(zhuǎn)RGB 8bit/10bit通用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python 根據(jù)excel中顏色區(qū)分讀取的操作
這篇文章主要介紹了python 根據(jù)excel中顏色區(qū)分讀取的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03

