Python使用openpyxl自動(dòng)化實(shí)現(xiàn)Excel排版與讀寫
在第一節(jié)課中,我們體驗(yàn)了如何用Python快速創(chuàng)建一個(gè)Excel文件。但在實(shí)際工作中,我們往往需要對(duì)已有的Excel文件進(jìn)行讀取、修改,甚至要設(shè)置漂亮的格式(加粗、標(biāo)紅、加邊框等)。
本節(jié)課,我們將深入學(xué)習(xí) openpyxl 庫,幫你徹底搞定Excel的基礎(chǔ)讀寫與排版操作!
1. 核心概念理解
在使用openpyxl時(shí),必須掌握三個(gè)核心概念,它們的層級(jí)關(guān)系如下:
- Workbook (工作簿):代表整個(gè)Excel文件。
- Worksheet (工作表):代表Excel文件中的一個(gè)Sheet頁。
- Cell (單元格):代表Sheet頁中的某一個(gè)小格子(如A1, B2)。
操作Excel的基本流程:打開Workbook -> 選擇Worksheet -> 操作Cell -> 保存Workbook。
2. 讀取與修改已有Excel文件
假設(shè)我們有一個(gè)名為 data.xlsx 的文件,里面有一張“成績表”。
import openpyxl
# 1. 加載已存在的Excel文件
wb = openpyxl.load_workbook("data.xlsx")
# 2. 獲取工作表
# 獲取所有sheet的名字: print(wb.sheetnames)
sheet = wb["成績表"]
# 3. 讀取單元格的值
cell_val = sheet["B2"].value
print(f"B2單元格的值是: {cell_val}")
# 4. 修改單元格的值
sheet["C2"] = 98
# 5. 遍歷多行數(shù)據(jù)
for row in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=3, values_only=True):
print(row) # 輸出每一行的數(shù)據(jù)元組
# 6. 保存修改(注意:如果在打開狀態(tài)下保存會(huì)報(bào)錯(cuò),請先關(guān)閉Excel軟件)
wb.save("data_modified.xlsx")
3. 單元格格式大改造
給領(lǐng)導(dǎo)看的報(bào)表,格式必須清晰美觀。openpyxl提供了 styles 模塊來處理格式。
3.1 設(shè)置字體 (Font)
from openpyxl.styles import Font # 設(shè)置字體為微軟雅黑,大小14,加粗,紅色 custom_font = Font(name="微軟雅黑", size=14, bold=True, color="FF0000") sheet["A1"].font = custom_font
3.2 設(shè)置對(duì)齊方式 (Alignment)
from openpyxl.styles import Alignment # 設(shè)置水平居中、垂直居中 align = Alignment(horizontal="center", vertical="center") sheet["A1"].alignment = align
3.3 設(shè)置背景填充色 (PatternFill)
from openpyxl.styles import PatternFill # 設(shè)置背景色為純色填充,黃色 (Hex顏色代碼) fill = PatternFill(fill_type="solid", start_color="FFFF00") sheet["A1"].fill = fill
3.4 設(shè)置邊框 (Border)
from openpyxl.styles import Border, Side # 定義細(xì)邊框線條 thin_line = Side(border_style="thin", color="000000") # 設(shè)置上下左右四個(gè)邊框 border = Border(left=thin_line, right=thin_line, top=thin_line, bottom=thin_line) sheet["A1"].border = border
4. 調(diào)整行高與列寬
有時(shí)候數(shù)據(jù)太長顯示為 ###,我們需要用代碼自動(dòng)調(diào)整寬高:
# 設(shè)置第一行的行高為 30 sheet.row_dimensions[1].height = 30 # 設(shè)置A列的列寬為 20 sheet.column_dimensions["A"].width = 20
5. 小結(jié)
這節(jié)課我們掌握了 openpyxl 的核心技能,從文件的加載、數(shù)據(jù)的讀寫,到字體、對(duì)齊、背景、邊框的全面美化。利用這些功能,你已經(jīng)可以寫出一個(gè)自動(dòng)給日報(bào)/周報(bào)排版格式的腳本了。
但如果你有10萬條數(shù)據(jù)需要篩選、統(tǒng)計(jì),openpyxl的速度可能會(huì)有點(diǎn)慢。下一節(jié)課,我們將引入真正的數(shù)據(jù)處理大殺器 —— pandas!敬請期待。
到此這篇關(guān)于Python使用openpyxl自動(dòng)化實(shí)現(xiàn)Excel排版與讀寫的文章就介紹到這了,更多相關(guān)Python openpyxl Excel排版與讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python利用openpyxl/xlrd/xlwt和pandas操作Excel
- 使用Python?openpyxl批量處理Excel的操作指南
- Python使用openpyxl自動(dòng)化處理Excel數(shù)據(jù)與文件詳解
- Python使用openpyxl操作Excel的高階技巧分享
- Python使用openpyxl高效讀寫與封裝Excel的完整指南
- Python使用openpyxl從URL讀取Excel并獲取單元格樣式
- Python利用openpyxl與pandas處理Excel多工作表的實(shí)戰(zhàn)對(duì)比
- Python使用Tkinter+openpyxl處理Excel文件并顯示實(shí)時(shí)進(jìn)度條
相關(guān)文章
排查?“Python?版本與?NumPy?不匹配”適配版本對(duì)照表與安裝方法詳解
NumPy庫有許多版本,每個(gè)版本都有不同的功能和改進(jìn),這篇文章主要介紹了排查?“Python?版本與?NumPy?不匹配”適配版本對(duì)照表與安裝方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-12-12
PythonPC客戶端自動(dòng)化實(shí)現(xiàn)原理(pywinauto)
這篇文章主要介紹了Python基于pywinauto實(shí)現(xiàn)PC客戶端自動(dòng)化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
使用Python實(shí)現(xiàn)一鍵往Word文檔的表格中填寫數(shù)據(jù)
在工作中,我們經(jīng)常遇到將Excel表中的部分信息填寫到Word文檔的對(duì)應(yīng)表格中,以生成報(bào)告,方便打印,所以本文小編就給大家介紹了如何使用Python實(shí)現(xiàn)一鍵往Word文檔的表格中填寫數(shù)據(jù),文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-12-12
Python對(duì)象的生命周期源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python對(duì)象的生命周期源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
如何使用Django Admin管理后臺(tái)導(dǎo)入CSV
這篇文章主要介紹了如何使用Django Admin管理后臺(tái)導(dǎo)入CSV,幫助大家更好的理解和使用django框架,感興趣的朋友可以了解下2020-11-11
一個(gè)可以套路別人的python小程序?qū)嵗a
本文通過一段實(shí)例代碼給大家分享一個(gè)可以套路別人的python小程序,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04

