Excel與Python的交互處理: Openpyxl (1)

Excel與Python的交互處理: Openpyxl (1)的圖1

1 引言

由于最近打算編寫一個小的Excel程序, 于是在想使用哪一種語言與Excel進行交互. 過去, 主要使用了Excel里自帶的VBA語言, 例如<BYSPT: 使用標準貫入試驗估算土體的物理力學參數(shù)值>, 在那段時間里, 也使用VBA編寫了樁設計, 排樁支護等工作使用的Excel程序. 近年來Python的呼聲日益高漲, 許多用戶要求微軟的Excel嵌入Python語言. 不過, 在目前的Excel中還沒有實現(xiàn)這一功能. 


后來, 在處理超過10萬條的電影數(shù)據(jù)時, 使用了Pandas與Excel進行交互操作. 同時也安裝過openpyxl, 這臺機器上次安裝的版本是2.5.3, 大約是在2018年左右. 如今兩年多過去了, openpyxl已經(jīng)發(fā)展到3.0.7, 于是首先把openpyxl更新到最新版本, 如下圖所示. 

Excel與Python的交互處理: Openpyxl (1)的圖2

這個筆記沒有邏輯地試驗了openpyxl的一些功能, 將來有可能把它嵌入到FLAC3D, UDEC等軟件中處理一些數(shù)據(jù), 例如地震記錄, SPT或CPT的測量數(shù)據(jù).  


2 輸入類

在本實驗中, 僅輸入了兩個類: Workbook和Font, Workbook用來實例化對象wb, ws讓這個對象激活, 如下所示.

from openpyxl import Workbookfrom openpyxl.styles import Fontwb = Workbook()ws = wb.active


3 直接賦值到cell

openpyxl可以直接把值賦值到cell中, 可以賦值字符串,也可以輸入數(shù)值. 例如:

ws['A1'] = '公路橋涵結(jié)構(gòu)設計'ws['B1'] = 24

此外, 也可以把當前時間賦值到cell中. 例如:

import datetimews['C1'] = datetime.datetime.now()


4 批量賦值多個cell

openpyxl使用append方法可以輸入多個cell, 例如:

ws.append([1, 2, 3, 4])把這四個值分別賦值到A1,A2,A3,A4中. 

一個更萬能的方法是使用數(shù)組賦值, 例如:

rows_count = (      (14, 27),      (22, 30),      (42, 92),      (51, 32),      (16, 60),      (63, 13)  )

在定義了這個數(shù)值后, 使用append把這些值賦值到(A1:B6)中:

for i in rows_count:      ws.append(i)


5 使用Excel公式

首先, 對一個cell的指定可以使用A1, B3這種格式外, 也可以直接使用行和列的數(shù)值來指定. 例如:

cell = ws.cell(row=7, column=3)

然后使用Excel的求和公式把上面的(A1:B6)相加,賦值到C7:

cell.value = "=SUM(A1:B6)" 


6 對字體控制

因為在開始輸入了Font類, 所以可以對字體進行控制,包括字型和顏色:

cell.font = Font(bold=True,color = "FF0000")

這句代碼把上面的求和值改成了紅色粗體.


7 改變保存路徑

在默認狀態(tài)下, Excel文件保存到與py文件相同的目錄下, 如果想保存到不同的目錄, 可以自己設置路徑:

filepath = "F:/tutorial/sample.xlsx"
wb.save(filepath)


8 加載存在的Excel文件

在下面的代碼中, 通過load_workbook類加載一個已經(jīng)存在的Excel文件:

from openpyxl import Workbookfrom openpyxl import load_workbookwb = Workbook() wb.save("demo.xlsx")wb = load_workbook("demo.xlsx")


登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

6