Excel與Python的交互處理: Openpyxl (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更新到最新版本, 如下圖所示.
這個筆記沒有邏輯地試驗了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")
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















