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')