openpyxl用於操作後綴名爲.xlsx的excel表格文件,一個excel電子表格文檔稱爲一個工作簿,每個工作簿可以包含多個表(也稱爲工作表),在excel中即爲左下角的"Sheet1 Sheet2 Sheet3"。打開excel時出現的工作表稱爲活動表。
首先導入openpyxl import openpyxl
,
wb = openpyxl.load_workbook("example.xlsx")
調用load_workbook(),傳入文件路徑,導入工作簿,返回的是一個工作簿對象。
print(wb.get_sheet_names())
通過get_sheet_names()方法可以查看所有的工作表,返回的是列表(['Sheet1', 'Sheet2', 'Sheet3']
)。
sheet = wb.get_sheet_by_name("Sheet1")
也可以通過get_sheet_by_name()的方法指定工作表名,或者通過sheet = wb.active
獲得活動表。
sheet是工作簿中的工作表,而工作表中的每個單元格稱之爲"Cell"。在xlsx中,我們可以通過行列索引訪問相應的單元格。但是這裏的列索引不是0、1、2……,而是字母A、B、C……,而且行索引的最小值是1並不是0。
print(sheet["A1"])
可以直接通過"A1"訪問第一行第一列的單元格,這裏A必須要放在1之前,返回的是一個Cell類型(<Cell 'Sheet1'.A1>
)。
highest_row, highest_column = sheet.max_row, sheet.max_column
可以通過max_row和max_column兩個sheet屬性獲取工作表的最大行列數。
每個Cell都有一個value屬性,value中存放着單元格的值,除此之外還有row、column和coordinate屬性。
cell = sheet["A1"]
print(cell.value, cell.row, cell.column, cell.coordinate)
2015-04-05 13:34:02 1 1 A1
通過打印出的結果,可以看出row代表單元格的行索引,column代表單元格的列索引,coordinate代表行列相結合的索引,這裏的column並不是A字母索引而是數字索引。
wb = openpyxl.load_workbook("example.xlsx")
sheet = wb.active
print(sheet.cell(row=1, column=1).value)
2015-04-05 13:34:02
也可以對sheet調用cell方法,通過指定行列索引來獲得相應的單元格。 from openpyxl.utils import get_column_letter, column_index_from_string
,從utils包中導入get_column_letter和column_index_from_string方法可以分別將列的數字索引轉爲字母索引,將字母索引轉爲數字索引。
要想獲取sheet中的某一列的值可以這樣做:
wb = openpyxl.load_workbook("example.xlsx")
sheet = wb.active
highest_row, highest_column = sheet.max_row, sheet.max_column
date, date_str = [], []
for r in range(1, highest_row+1):
date.append(sheet.cell(row=r, column=1).value)
for d in date:
date_str.append(d.strftime("%Y-%m-%d %H-%M-%S"))
print(date_str)