利用 Python 對 Excel 文件進行操作需要使用第三方庫: openpyxl,可執行 pip install openpyxl 進行安裝 1. 導入 openpyxl 模塊 導入 openpyxl 模塊後,利用它的 load_workbook() 方法可以打開一個 Excel 文件,該方法使 ...
利用 Python 對 Excel 文件進行操作需要使用第三方庫: openpyxl,可執行 pip install openpyxl 進行安裝
1. 導入 openpyxl 模塊
導入 openpyxl 模塊後,利用它的 load_workbook() 方法可以打開一個 Excel 文件,該方法使用一個文件名稱作為參數,示例如下:
>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> type(wb)
<class 'openpyxl.workbook.workbook.Workbook'>
2. openpyxl 常用方法
可以使用 openpyxl 對象的 get_sheet_names() 方法得到打開的工作薄中存在的所有工作表名稱、用 get_sheet_by_name() 方法獲取工作表對象、用 active 屬性可獲取當前活躍工作表的名稱:
>>> wb.get_sheet_names()
['Sheet1', 'Sheet2', 'Sheet3']
>>> sheet = wb.get_sheet_by_name('Sheet3')
>>> sheet
<Worksheet "Sheet3">
>>> type(sheet)
<class 'openpyxl.worksheet.worksheet.Worksheet'>
>>> sheet.title
'Sheet3'
>>> anotherSheet = wb.active
>>> anotherSheet
<Worksheet "Sheet1">
3. 獲取單元格屬性
可以直接使用單元格名稱獲取指定單元格,同時單元格具有值、行、列、坐標屬性,舉例如下:
>>> sheet = wb.get_sheet_by_name('Sheet1')
>>> sheet['A1']
<Cell Sheet1.A1>
>>> sheet['A1'].value
datetime.datetime(2015, 4, 5, 13, 34, 2)
>>> c = sheet['B1']
>>> c.value
'Apples'
>>> 'Row ' + str(c.row) + ', Column ' + c.column + ' is ' + c.value
'Row 1, Column B is Apples'
>>> 'Cell ' + c.coordinate + ' is ' + c.value
'Cell B1 is Apples'
>>> sheet['C1'].value
73
4. 使用 cell()
同時也可以使用工作表對象的 cell() 方法來直接指定單元格,使用該方法時要註意,工作表中的行、列都是從1而不是0開始的:
>>> sheet.cell(row=1, column=2)
<Cell Sheet1.B1>
>>> sheet.cell(row=1, column=2).value
'Apples'
>>> for i in range(1, 8, 2):
print(i, sheet.cell(row=i, column=2).value)
1 Apples
3 Pears
5 Apples
7 Strawberries
5. 獲取當前工作表中有效數據區域的行數和列數
>>> sheet.max_row
7
>>> sheet.max_column
3
6. 行、列之間的轉換
需要使用 get_column_letter、column_index_from_string 這兩個方法
>>> from openpyxl.cell import get_column_letter, column_index_from_string
>>> get_column_letter(1)
'A'
>>> get_column_letter(2)
'B'
>>> get_column_letter(27)
'AA'
>>> get_column_letter(900)
'AHP'
>>> get_column_letter(sheet.max_column)
'C'
>>> column_index_from_string('A')
1
>>> column_index_from_string('AA')
27
7. 獲取區域數據
>>> tuple(sheet['A1':'C3'])
((<Cell Sheet1.A1>, <Cell Sheet1.B1>, <Cell Sheet1.C1>), (<Cell Sheet1.A2>, <Cell Sheet1.B2>, <Cell Sheet1.C2>), (<Cell Sheet1.A3>, <Cell Sheet1.B3>, <Cell Sheet1.C3>))
8. 獲取指定一行或一列數據
>>> sheet.columns[1]
(<Cell Sheet1.B1>, <Cell Sheet1.B2>, <Cell Sheet1.B3>, <Cell Sheet1.B4>, <Cell Sheet1.B5>, <Cell Sheet1.B6>, <Cell Sheet1.B7>)
9. 總結
利用 openpyxl 對 excel 文件進行操作,主要步驟有以下幾點:
- 導入 openpyxl 模塊
- 調用 openpyxl.load_workbook() 函數
- 獲得 Workbook 對象
- 讀取活躍工作表變數或者調用 get_sheet_by_name() 方法
- 獲得 Worksheet 對象
- 使用索引或使用行、列關鍵詞調用工作表的 cell() 方法
- 獲得 Cell 對象
- 讀取 Cell 對象的屬性值