Python:Excel自動化實踐入門篇 乙【送圖書活動繼續】

ENG八戒發表於2023-03-01

*以下內容為本人的學習筆記,如需要轉載,請宣告原文連結 微信公眾號「englyf」https://mp.weixin.qq.com/s/y-npGelPJwmx3iNvHaXRTg


本文上接《Python:Excel自動化實踐入門篇 甲》


正文開始之前,提醒一下朋友們,送圖書的活動還在繼續,朋友們請加緊時間點選 參與一下》,不要錯過哦!


算術操作

在處理 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自動化實踐入門篇》的介紹就到此結束了。由於篇幅受限,本系列教程分成了下面幾個部分,有興趣的朋友可點選跳轉查閱

《Python:Excel自動化實踐入門篇 甲》

《Python:Excel自動化實踐入門篇 乙》

相關文章