python辦公自動化EXCEL學習筆記
一、excel讀取
1、首先使用命令 pip install openpyxl==2.6.2 匯入操作excel的模組
2、呼叫openpyxl.load_workbook(path)函式開啟工作簿,取得workbook物件
需要明確的是 一個excel檔案就是一個工作簿,開啟工作簿後,底部的sheet1、sheet2.....這個叫做工作表格,workbook物件包含了所有的sheet
活動表格:excel檔案當前顯示的sheet表格
3、取得workbook物件後,使用active或者sheetname屬性,拿到想要的workbook物件
使用索引或者工作表的cell(row,column)方法,取得cell物件,cell物件的value屬性拿到cell物件的值(單元格的值)
4、使用工作表的max_row和max_column屬性拿到行和列的最大值
1 import openpyxl 2 3 wb = openpyxl.load_workbook('example.xlsx') 4 print(wb.sheetnames) 5 print(wb['Sheet1'].title) 6 sheet1 = wb["Sheet1"] 7 print(sheet1['A1'].value) 8 9 c = sheet1.cell(row=1,column=1) 10 print('Row is %s,Column is %s ,Value is %s' %(c.row,c.column,c.value)) 11 12 13 for i in range(1,5): 14 print('%10s,%10s,%10s'%(sheet1.cell(row=i,column=1).value,sheet1.cell(row=i,column=2).value,sheet1.cell(row=i,column=3).value)) 15 16 print(sheet1.max_row) 17 print(sheet1.max_column)
['Sheet1', 'Sheet2', 'Sheet3']
Sheet1
2022/3/410:41
Row is 1,Column is 1 ,Value is 2022/3/410:41
2022/3/410:41, a, 1
2022/3/410:41, b, 2
2022/3/410:41, c, 3
2022/3/410:41, d, 4
5
3
5、使用openpyxl.utils.column_index_from_string()函式,將列值得字母轉為數字,openpyxl.utils.get_column_letter()函式,將數字轉換為字母
1 >>> import openpyxl 2 >>> from openpyxl.utils import get_column_letter, column_index_from_string 3 >>> get_column_letter(1) # Translate column 1 to a letter. 4 'A' 5 >>> get_column_letter(2) 6 'B' 7 >>> get_column_letter(27) 8 'AA' 9 >>> get_column_letter(900) 10 'AHP' 11 >>> wb = openpyxl.load_workbook('example.xlsx') 12 >>> sheet = wb['Sheet1'] 13 >>> get_column_letter(sheet.max_column) 14 'C' 15 >>> column_index_from_string('A') # Get A's number. 16 1 17 >>> column_index_from_string('AA') 18 27
6、可使用worksheet物件,通過[A1:F3]的形式,拿到excel此區域的cell物件,然後進行遍歷便可取到每一個cell物件
1 sheet1['A1:F3'] 2 ..... 3 for item in ['A1:F3']: 4 .....
二、excel寫入
需要注意的地方是:修改Workbook物件或它的工作單元格時,不會自動儲存,要手動呼叫save()方法才能儲存
1、建立工作簿
使用openpyxl.Workbook()函式就可以建立一個新的空的workbook物件
2、建立和刪除工作表
create_sheet()用來建立工作表,方法會返回一個新的Workbook物件,名字為SheetX,預設新增到工作簿的最後一個工作表。可以使用index指定新的表格在工作簿中的位置,title指定名稱
1 >>> import openpyxl 2 >>> wb = openpyxl.Workbook() 3 >>> wb.sheetnames 4 ['Sheet'] 5 >>> wb.create_sheet() # Add a new sheet. 6 <Worksheet "Sheet1"> 7 >>> wb.sheetnames 8 ['Sheet', 'Sheet1'] 9 >>> # Create a new sheet at index 0. 10 >>> wb.create_sheet(index=0, title='First Sheet') 11 <Worksheet "First Sheet"> 12 >>> wb.sheetnames 13 ['First Sheet', 'Sheet', 'Sheet1'] 14 >>> wb.create_sheet(index=2, title='Middle Sheet') 15 <Worksheet "Middle Sheet"> 16 >>> wb.sheetnames 17 ['First Sheet', 'Sheet', 'Middle Sheet', 'Sheet1']
del刪除工作表
1 >>> wb.sheetnames 2 ['First Sheet', 'Sheet', 'Middle Sheet', 'Sheet1'] 3 >>> del wb['Middle Sheet'] 4 >>> del wb['Sheet1'] 5 >>> wb.sheetnames 6 ['First Sheet', 'Sheet']
3、單元格寫入值
1 sheet['A1'] = 'Hello, world!' # Edit the cell's value. 2 >>> sheet['A1'].value 3 'Hello, world!'
三、設定單元格字型風格
1、匯入相應的函式
from openpyxl.styles import Font
1 >>> import openpyxl 2 >>> from openpyxl.styles import Font 3 >>> wb = openpyxl.Workbook() 4 >>> sheet = wb['Sheet'] 5 >>> italic24Font = Font(size=24, italic=True) # Create a font. 24點 斜體 6 >>> sheet['A1'].font = italic24Font # Apply the font to A1. 7 >>> sheet['A1'] = 'Hello, world!' 8 >>> wb.save('styles.xlsx')