python使用openpyxl模块操作excel
1. 使用openpyxl模块操作excel表格
excel表格有以下几个部分组成:
工作簿:workbook,即一个excel表格
表单:worksheet,如下图:
行(row)、列(column)、单元格(cell)
1.1 读取excel文件中的数据
-
导入openpyxl模块
import openpyxl
-
获取要读取excel文件,创建对象;
wb = openpyxl.load_workbook(filename)
-
获取要读取的表单,创建对象
sheet = wb[sheetname]
-
查看单元格数据:
# 打印单元格为A1的值 print(sheet1['A1'].value) # 打印第一行第一列单元格的值 print(sheet1.cell(row=1,column=2).value) # 依次打印每列的值 col_range = sheet1['A:C'] for col in col_range: for cell in col: print(cell.value)
其他读取操作:(可以对单元格进行切片操作)
# 查看excel表格下的表单名称,以列表形式打印
print(wb.sheetnames)
for sheet in wb:
# 获取表单名称
print(sheet.title)
# 获取excel表格中的活跃表单对象
ws_active = wb.active
B1 = sheet1['B1']
# 查看B1单元格的行号和列号
print('row is {},column is {},value is {}'.format(B1.row,B1.column,B1.value))
# coordinate属性表示单元格的位置
print('Cell {} is {} '.format(B1.coordinate,B1.value))
# 打印表单sheet1的中有效数据的行数和列数
print('{} * {}'.format(sheet1.max_row,sheet1.max_column))
# 将使用A、B、C...表示列的方法转化为使用数字表示,反过来也是如此
from openpyxl.utils import get_column_letter,column_index_from_string
print(get_column_letter(2),get_column_letter(100))
print(column_index_from_string('B'),column_index_from_string('CV'))
运行结果:
B CV
2 100
1.2 将数据写入excel文件(修改excel文件中的数据)
- 导入openpyxl模块,
import openpyxl
- 获取要修改的文件,或创建一个空的文件,将数据写入
- 获取要修改的文件对象:
wb = openpyxl.load_workbook(filename)
- 创建一个空的excel文件对象:
wb = openpyxl.Workbook()
- 获取要修改的文件对象:
- 获取要修改的表单:
sheet = wb[sheetname]
- 修改或写入新数据:
sheet['A1'] = 张三'
,或sheet1.append(['张三'])
,append方法会自动在源文件的数据下面加上数据,参数是列表类型; - 删除表单:
wb.remove(wb['其他1'])
- 保存修改操作:
wb.save(filename)
,尽量保存为一个新的文件,避免出现修改失败的情况
行(row)、列(column)、单元格(cell)
1.1 读取excel文件中的数据
-
导入openpyxl模块
import openpyxl
-
获取要读取excel文件,创建对象;
wb = openpyxl.load_workbook(filename)
-
获取要读取的表单,创建对象
sheet = wb[sheetname]
-
查看单元格数据:
# 打印单元格为A1的值 print(sheet1['A1'].value) # 打印第一行第一列单元格的值 print(sheet1.cell(row=1,column=2).value) # 依次打印每列的值 col_range = sheet1['A:C'] for col in col_range: for cell in col: print(cell.value)
其他读取操作:(可以对单元格进行切片操作)
# 查看excel表格下的表单名称,以列表形式打印
print(wb.sheetnames)
for sheet in wb:
# 获取表单名称
print(sheet.title)
# 获取excel表格中的活跃表单对象
ws_active = wb.active
B1 = sheet1['B1']
# 查看B1单元格的行号和列号
print('row is {},column is {},value is {}'.format(B1.row,B1.column,B1.value))
# coordinate属性表示单元格的位置
print('Cell {} is {} '.format(B1.coordinate,B1.value))
# 打印表单sheet1的中有效数据的行数和列数
print('{} * {}'.format(sheet1.max_row,sheet1.max_column))
# 将使用A、B、C...表示列的方法转化为使用数字表示,反过来也是如此
from openpyxl.utils import get_column_letter,column_index_from_string
print(get_column_letter(2),get_column_letter(100))
print(column_index_from_string('B'),column_index_from_string('CV'))
运行结果:
B CV
2 100
1.2 将数据写入excel文件(修改excel文件中的数据)
- 导入openpyxl模块,
import openpyxl
- 获取要修改的文件,或创建一个空的文件,将数据写入
- 获取要修改的文件对象:
wb = openpyxl.load_workbook(filename)
- 创建一个空的excel文件对象:
wb = openpyxl.Workbook()
- 获取要修改的文件对象:
- 获取要修改的表单:
sheet = wb[sheetname]
- 修改或写入新数据:
sheet['A1'] = 张三'
,或sheet1.append(['张三'])
,append方法会自动在源文件的数据下面加上数据,参数是列表类型; - 删除表单:
wb.remove(wb['其他1'])
- 保存修改操作:
wb.save(filename)
,尽量保存为一个新的文件,避免出现修改失败的情况