python使用openpyxl操作excel总结

发布时间:2025-10-09 15:50

掌握数据分析工具如Excel或Python的基础操作 #生活技巧# #工作学习技巧# #数字技能学习#

安装openpyxl#

pip install openpyxl

简单示例#

from openpyxl import Workbook #创建一个工作薄对象,也就是创建一个excel文档 wb = Workbook() #指定当前显示(活动)的sheet对象 ws = wb.active # 给A1单元格赋值 ws['A1'] = 42 # 一行添加多列数据 ws.append([1, 2, 3]) # 保存excel wb.save("sample.xlsx")

使用openpyxl的一般流程为:创建/读取excel文件-->选择sheet对象-->对表单/cell进行操作-->保存excel

1.创建/读取excel文件#

创建excel

from openpyxl import Workbook wb = Workbook()

读取excel

from openpyxl import load_workbook wb = load_workbook('1.xlsx')

保存excel

wb.save('filename.xlsx')

2.sheet表单操作#

获取sheet

#以list方式返回excel文件所有sheet名称(->list[str,str..])
wb.sheetnames wb.get_sheet_names()

选择sheet对象

#根据sheet名称选取 ws = wb['sheet1'] ws = wb.get_sheet_by_name('sheet1') #选择当前显示,活动的sheet ws = wb.active ws = wb.get_active_sheet()

创建新的sheet

#默认插入到最后 ws = wb.create_sheet("newsheet") #插入到最开始的位置(从0开始计算) ws = wb.create_sheet("newsheet", 0)

复制一个sheet对象

source = wb.active target = wb.copy_worksheet(source)

sheet常见属性

#sheet名称 sheet.title #最大行和最大列 sheet.max_row sheet.max_column #行列生成器 sheet.rows #为行生成器, 里面是每一行的cell对象,由一个tuple包裹。 sheet.columns #为列生成器, 里面是每一列的cell对象,由一个tuple包裹。
可以使用list(sheet.rows)[0].value 类似方法来获取数据,或 for row in sheet.rows: for cell in row: print(cell.value) 来遍历值,或值生成器 sheet.values 仅遍历值

删除sheet

wb.remove(sheetobject) del wb['sheet'] #sheetname

sheet的其它操作

#插入行,在第7行之前插入 ws.insert_rows(7) #插入列,在第7列之前插入 ws.insert_cols(7) #删除行列 ws.delete_rows(7) ws.delete_cols(7) #可以删除多个 ws.delete_cols(6, 3)

3.单元格对象#

选择cell单元格对象

#根据名称访问 a1 = ws['A1'] #A列1行的单元对象 a2 = ws['a2'] #也可以小写 #cell方法访问 b2 = ws.cell(row=2, column=2) b3 = ws.cell(3,2) #从cell列表中返回 b3 = list(ws.rows)[2][1] b3 = list(ws.columns)[1][2]

选择多个单元格

#切片访问 a2_b3 = ws['a2':'b3'] 以行组成tuple返回tuple ((<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>), (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>)) #单独字母与数字返回列与行的所有数据 b = ws['b'] #返回b列的所有cell对象 row1 = ws['1'] #返回第1行的所有cell #当然也能范围选择 a_e = ws['a:e'] #a-e列的cell对象

单元格属性

#返回列 cell.column #返回行 cell.row #返回值 cell.value 注意:如果单元格是使用的公式,则值是公式而不是计算后的值 #返回单元格格式属性 cell.number_format 默认为General格式 #单元格样式 cell.font

更改单元格值

#直接赋值 ws['a2'] = 222 ws['a2'] = 'aaa' ws['b2'] = '=SUM(A1:A17)' #使用公式 #value属性赋值 cell.value = 222 或 ws.cell(1,2,value = 222)

移动单元格

ws.move_range("D4:F10", rows=-1, cols=2) 表示单元格D4:F10向上移动一行,右移两列。单元格将覆盖任何现有单元格。(最新版本的才会这个方法,使用pip list查看版本是否为最新) ws.move_range("G4:H10", rows=1, cols=1, translate=True) 移动中包含公式的自动转换

合并与拆分单元格

#合并单元格,以最左上角写入数据或读取数据 ws.merge_cells('A2:D2') #拆分单元格 ws.unmerge_cells('A2:D2')

4.格式样式设置#

导入类

from openpyxl.styles import Font, colors, Alignment

Font类常见参数

font = Font(name='Calibri',       #字体名字 size=11,  #字体大小 bold=False,   #是否加粗 italic=False, #斜体 underline='none',  #下划线 color='FF000000')  #颜色,可以用colors中的颜色

设置字体

t_font = Font(name='Calibri', size=24, italic=True, color=colors.RED, bold=True) #给font属性赋值font对象即可 sheet['A1'].font = t_font

对齐方式

# 设置B1中的数据垂直居中和水平居中,除了center,还可以使用right、left等等参数 sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')

设置单元格长宽

# 第2行行高 sheet.row_dimensions[2].height = 40 # C列列宽 sheet.column_dimensions['C'].width = 30

官方文档参考:https://openpyxl.readthedocs.io/en/latest/

网址:python使用openpyxl操作excel总结 https://www.yuejiaxmz.com/news/view/1352383

相关内容

Python操作Excel的Xlwings教程(八)——Excel使用VBA调用Python
使用 Python 将工作流程自动化
python 网页自动化操作
使用Python脚本自动化日常任务的技巧与实战案例
会python基础,如何学习自动化办公
python如何实现自动化办公
解决Python编程快速上手——让繁琐工作自动化的具体操作步骤
快速入门Python办公自动化:让效率提升10倍的实用指南
Python办公自动化:解锁高效工作流程,掌握文档处理的艺术
task02 Python自动化之Excel

随便看看