*以下內容為本人的學習筆記,如需要轉載,請宣告原文連結 微信公眾號「englyf」https://mp.weixin.qq.com/s/y-npGelPJwmx3iNvHaXRTg
正文開始之前,提醒一下朋友們,送圖書的活動還在繼續,朋友們請加緊時間點選 參與一下》,不要錯過哦!
算術操作
在處理 excel 表格資料時,經常會用到公式來對資料執行統計。那麼自動化怎麼統計呢?
直接把計算公式賦值給輸出結果的單元格 cell,下面試一下計算區域資料的和
import openpyxl
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet['A1'] = 100
sheet['A2'] = 200
sheet['A3'] = 300
sheet['A4'] = 400
sheet['A5'] = 500
sheet['A7'] = '= SUM(A1:A5)'
workbook.save("sum.xlsx")
看看實際效果
調整行高和列寬
很多時候也需要對儲存某些資訊量的行列進行寬高調整,那麼每個都要手動拖動拉伸就很令人苦惱了。這裡介紹如何自動化設定行高和列寬。利用到修改單元格 cell 的屬性 height 和屬性 width 的值。
下面舉個例子
import openpyxl
workbook = openpyxl.load_workbook("test.xlsx")
sheet = workbook.active
sheet.row_dimensions[6].height = 70
sheet.column_dimensions['C'].width = 20
workbook.save('test.xlsx')
看看實際效果
這就是簡單的調整行高和列寬,會影響到同一行或列的所有單元格。
合併單元格
有些表格中,部分割槽域的單元格可以作為同一個單元格使用,那麼就可以對其執行合併操作了。
合併操作透過表格 sheet 的 merge_cells() 方法實現,下面看看程式碼
import openpyxl
workbook = openpyxl.load_workbook("test.xlsx")
sheet = workbook.active
sheet.merge_cells("B2:C4")
workbook.save('test.xlsx')
看看實際效果
可以看到原來區域 B2:C4 中都是分離的單元格,現在合併成一個單獨的單元格了。
拆分單元格
和合並單元格相對的,也有需要對單元格拆分的時候。拆分單元格使用的是表格 sheet 的 unmerge_cells() 方法。
再對上面的表格中被合併的單元格執行拆分處理
import openpyxl
workbook = openpyxl.load_workbook("test.xlsx")
sheet = workbook.active
sheet.unmerge_cells("B2:C4")
workbook.save('test.xlsx')
看看實際效果
現在又變回合併前的樣子了
設定字型
同樣的,表格裡的有些字型也是可能需要特別設定,對於查閱內容比較有幫助。可以透過 openpyxl 的 styles 模組的 Font() 方法執行配置。
下面試一下,把單元格 A1 的內容設定為字型大小 24,粗體,italic,字型名字為 ‘Times New Roman’
import openpyxl
from openpyxl.styles import Font
workbook = openpyxl.load_workbook("test.xlsx")
sheet = workbook.active
sheet.cell(row = 1,
column = 1).font = Font(size = 24,
italic = True,
bold = True,
name = 'Times New Roman')
workbook.save('test.xlsx')
看看實際效果
繪圖表
為了讓 excel 表格裡的內容更加便於理解,離不開資料的視覺化,excel 就提供了繪製圖表的功能來體現資料視覺化。表格中資料和繪製的圖表關聯之後,資料的變更也會自動同步到圖表中。
現在就介紹用到自動化的方式來繪製圖表,舉個例子,現在表格裡插入一列資料,然後用 Reference() 選中表格中的資料域,建立柱狀圖表並關聯剛選中的資料域,設定表頭、xy軸標籤,再生成圖表,最後把工作簿儲存到檔案 sample.xlsx。
import openpyxl
from openpyxl.chart import BarChart
from openpyxl.chart import Reference
workbook = openpyxl.Workbook()
sheet = workbook.active
# 插入資料到表格 sheet
for i in range(10):
sheet.append([i])
# 選中表格的資料域
values = Reference(sheet,
min_col = 1,
min_row = 1,
max_col = 1,
max_row = 10)
# 建立柱狀圖表
chart = BarChart()
# 關聯資料域到圖表
chart.add_data(values)
# 設定圖表表頭
chart.title = " 例項圖示 "
chart.x_axis.title = " X 軸 "
chart.y_axis.title = " Y 軸 "
# 生成圖表,並貼到單元格 C2
sheet.add_chart(chart, "C2")
workbook.save("sample.xlsx")
看看實際效果
當然,除了可以生成柱狀圖,還可以生成餅狀圖、線狀圖等等,這裡不展開了。
圖片操作
有些時候也需要往 excel 表格裡插入圖片,那麼可以使用 openpyxl.drawing.image.Image 來實現。
由於 openpyxl.drawing.image.Image 依賴於第三方模組 pillow,所以在執行除錯環境裡還需要安裝庫 pillow。前面已經安裝,這裡略過。
試一下把下面的圖插入新建的 excel 表格裡
import openpyxl
from openpyxl.drawing.image import Image
workbook = openpyxl.Workbook()
sheet = workbook.active
img = Image("beauty.jpg")
sheet.add_image(img, 'B2')
workbook.save("img.xlsx")
看看實際效果
《Python:Excel自動化實踐入門篇》的介紹就到此結束了。由於篇幅受限,本系列教程分成了下面幾個部分,有興趣的朋友可點選跳轉查閱