多个网站域名 是新增接入,网站建设软件开发公司,wordpress改论坛,温州市城乡建设建档案馆网站excel表格是大家经常用到的文件格式#xff0c;各行各业都会跟它打交道。之前文章我们介绍了使用openpyxl和xlrd库读取excel表数据#xff0c;使用xlwt库创建和编辑excel表#xff0c;在办公自动化方面可以方便我们快速处理数据#xff0c;帮助我们提升效率。 python之open…
excel表格是大家经常用到的文件格式各行各业都会跟它打交道。之前文章我们介绍了使用openpyxl和xlrd库读取excel表数据使用xlwt库创建和编辑excel表在办公自动化方面可以方便我们快速处理数据帮助我们提升效率。 python之openpyxl快速读取Excel表内容
测开不得不会的python之xlrd库读取excel表内容
python之xlwt库编辑写入excel表内容
本次我们介绍使用openpyxl创建和编辑excel表。
官网文档 https://openpyxl.readthedocs.io/en/stable/
官网显示openpyxl是一个用于读/写Excel2010后缀为XLSX/XLSM/XLTX/XLTM文件的python库。
了解下电脑中的excel表格文件格式
微软或者金山的excel表格编辑保存时一般要选择文件后缀有xls和xlsx两类。
xls和xlsx后缀文件的主要区别 文件格式xls是二进制格式而xlsx是基于XML的压缩方式。 版本xls是Excel 2003及以前版本生成的文件格式而xlsx是Excel 2007及以后版本生成的文件格式。 兼容性xlsx格式向下兼容而xls格式不支持向后兼容。
安装openpyxl库
pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple/
目前最新版本3.1.5安装后目录结果如下初始化文件__init__.py文件如下 使用openpyxl库
初始化文件__init__.py文件已经导入了Workbookl类 该函数用于创建和编辑excel表使用时我们只需要通过如下命令直接导入即可
from openpyxl import Workbook
该Workbook类可以创建和操作sheet页对象(class为openpyxl.worksheet. worksheet.Worksheet)通过sheet对象不同的函数来编辑表格中的内容。
创建并编辑保存Excel表
1导入openpyxl库的Workbook类
from openpyxl import Workbook
2用一个图展示下编辑表格常用的函数WorkBook和Worksheet类中的函数 3操作sheet对象
首先我们先初始化Workbook对象
wb Workbook()
我们编辑表格其实编辑的都是表格下方的sheet页所以我们初始化后要先创建sheet页对象当然也可以复制删除移动复制sheet页对象。
a 创建sheet对象
1使用wb.active属性函数获取sheet对象
#获取表格sheet页一般是默认第1个也可以选择其他并保存后获取的就是保存后的sheet页对象 sheet wb.active
2使用create_sheet函数创建sheet对象 参数title代表 sheet页的名称可以不填。 参数index传值时代表创建第几个sheet页不传值时则按照顺序依次创建。
测试代码创建三个sheet页对象
wb Workbook()
sheet0 wb.create_sheet(sheet0,0)
sheet1 wb.create_sheet(sheet1,1)
sheet2 wb.create_sheet(sheet2)
b 获取sheet对象
1当创建了多个sheet对象后可指定获取第N个sheet页对象
wb.active 1
sheet wb.active
2使用wb._sheets获取所有sheet页对象列表并通过index获取单个sheet页对象
sheet wb._sheets[0]
3使用wb.sheetnames获取所有sheet页名称并通过wb[sheetname]获取sheet页对象
sheetnames wb.sheetnames
print(sheetnames )
sheet wb[functions]4使用wb.worksheets获取所有sheet页对象列表并通过index获取单个sheet页对象
print(wb.worksheets)
sheet wb.worksheets[0]
c 复制sheet页对象
函数copy_worksheet传入已存在的sheet对象并复制一个对象。 测试代码
wb Workbook()
sheet0 wb.active
sheet1 wb.copy_worksheet(sheet0)
wb.save(‘1.xlsx’) #保存文件
结果 d 删除sheet对象
有2种方式删除sheet对象
wb.remove(worksheet) or del wb[sheetname] 测试代码
wb Workbook()
#先创建三个sheet对象
sheet0 wb.create_sheet(sheet0,0)
sheet1 wb.create_sheet(sheet1,1)
sheet2 wb.create_sheet(sheet2)
#删除两个对象
wb.remove(sheet0)
del wb[sheet1]
wb.save(‘2.xlsx’) #保存文件
结果sheet0和sheet1被删除 e move_sheet用于移动对象
函数move_sheet可以将sheet对象移动offsheet偏移量。
参数sheet可以传sheet对象或者sheet的名称。 测试代码
wb Workbook()
#先创建三个sheet对象
sheet0 wb.create_sheet(sheet0,0)
sheet1 wb.create_sheet(sheet1,1)
sheet2 wb.create_sheet(sheet2)
#移动两个对象
wb.move_sheet(sheet0,3)
wb.move_sheet(sheet1,4)
wb.save(3.xlsx) #保存文件
结果sheet0和sheet1移动到了右边位置 4 编辑sheet页
a cell()函数设置单元格的值
cell函数的参数
row代表第几行column代表第几列需要大于等于1都则会报错value参数如果传值会设置为该单元格的值 以上函数返回的是单元格对象class为openpyxl.cell.cell.Cell Cell对象的几个属性
value 单元格的值row单元格所在的行数column单元格所在的列数data_type单元格内容对应的数据类型
测试代码
wb Workbook()
#先创建1个sheet对象
sheet0 wb.create_sheet(sheet0,0)
#填入第1行第1列和第1行第2列的值
sheet0.cell(1,1,hello)
sheet0.cell(1,2,python)
wb.save(3.xlsx) #保存文件
结果 b 像设置列表元素一样输入和删除单元格的值
之前文章我们讲过python中类class的魔法方法在类中实现了__getitem__、__setitem____delitem__魔法方法我们就可以对该类的对象像使用list列表一样获取、设置、删除元素。 按照如下格式输入单元格内容sheet0[A1] ‘hello’ 按照如下格式删除单元格内容del sheet0[B1]
解释A1代表第1列第1行的单元格B1代表第2列第1行的单元格; 相信大家已经清楚的知道字母代表列数字代表行跟我们打开表格看到的是一样的
测试代码
wb Workbook()
#先创建1个sheet对象
sheet0 wb.create_sheet(sheet0,0)
#填入第1行第1列和第1行第2列的值
sheet0[A1] hello
sheet0[B1] python
del sheet0[B1]
wb.save(4.xlsx) #保存文件
结果单元格B1的内容又被删掉了 c append()函数按行批量添加可迭代对象的元素
通过下图可知参数需要为可迭代对象列表/元组/字典等默认从第1行开始写入
如果为字典则字典的key需要满足大写字母A到ZZZ或者为数字代表在第几列输入字典的value。 测试代码
wb Workbook()
#先创建1个sheet对象
sheet0 wb.create_sheet(sheet0,0)
#设置列表和字典变量
data1 [hello,python,my,friend]
data2 {A:hello,C:python}
data3 {1:hello,2:python,4:friend}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
wb.save(6.xlsx) #保存文件
结果 d 插入/删除行和列
insert_rows,insert_cols,delete_rows,delete_cols四个函数分别代表插入行/插入列/删除行/删除列
参数都是有两个idx和amount
idx代表插入或者删除的位置amount代表插入或者删除的数量(amount值1) 比如 insert_rows(2,3) 代表在第2行上面插入3行
比如 insert_cols(2,3) 代表在第2列左面插入3列
比如 delete_rows(5,3) 代表在第5行上面删除3行
比如 delete_cols(5,3) 代表在第5列左面删除3列
e move_range移动一个范围内的单元格 move_range 方法需要几个参数
cell_range一个字符串表示要移动的单元格范围例如 A1:C3。rows一个整数表示要向下移动的行数正数表示向下负数表示向上。cols一个整数表示要向右移动的列数正数表示向右负数表示向左。
注意移动时单元格会被覆盖请务必小心。
测试代码
wb Workbook()
#先创建1个sheet对象
sheet0 wb.create_sheet(sheet0,0)
#设置列表和字典变量
data1 [hello,python,my,friend]
data2 {A:hello,C:python}
data3 {1:hello,2:python,4:friend}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
#移动一个范围
sheet0.move_range(A1:C1,2,3)
wb.save(6.xlsx) #保存文件
f merge_cells函数用于合并单元格
合并后的单元格将拥有合并前单元格的数据和样式并且可以跨越多个行和列。合并单元格可能会导致原有数据丢失大家要慎重使用。 参数介绍
range_string指定要合并的单元格区域例如A1:B2表示合并从A1到B2的单元格区域。其他四个参数分别表示合并的起始行、起始列、结束行和结束列。比如(1, 1, 3,2)表示合并第1行第1列到第3行第2列的单元格。
测试代码
wb Workbook()
#先创建1个sheet对象
sheet0 wb.create_sheet(sheet0,0)
#设置列表和字典变量
data1 [hello,python,my,friend]
data2 {A:hello,C:python}
data3 {1:hello,2:python,4:friend}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
#以下两种方式 同样的效果
sheet0.merge_cells(A1:C2)
sheet0.merge_cells(start_row1,start_column1,end_row3,end_column2)
wb.save(6.xlsx) #保存文件
结果 g unmerge_cells 取消合并单元格
跟merge_cells函数功能相反取消合并的单元格参数跟merge_cells一致参考上面的介绍 h 属性函数最大行/最大列/最小行/最小列
max_row: 代表最大行
max_column代表最大列
min_row: 代表最小行
min_column代表最小列 测试代码
wb Workbook()
#先创建1个sheet对象
sheet0 wb.create_sheet(sheet0,0)
#设置列表和字典变量
data1 [hello,python,my,friend]
data2 {A:hello,C:python}
data3 {1:hello,2:python,4:friend}
sheet0.append(data1)
sheet0.append(data2)
sheet0.append(data3)
#打印最大行 最大列等信息
print(fmax_row: {sheet0.max_row})
print(fmax_colunn: {sheet0.max_column})
print(fmin_row: {sheet0.min_row})
print(fmin_column: {sheet0.min_row})
wb.save(6.xlsx) #保存文件
结果
max_row: 3
max_colunn: 4
min_row: 1
min_column: 1
i add_image:在单元格中添加图片 参数image需要传入一个image对象而不是某个图片anchor填入单元格位置比如“A1”
image对象依赖另一个库pillow我们先安装这个库
pip install pillow -i https://mirrors.aliyun.com/pypi/simple/
测试代码
from openpyxl.drawing.image import Image
from openpyxl import Workbook
wb Workbook()
#先创建1个sheet对象
sheet0 wb.create_sheet(sheet0,0)
#定义image对象imageins Image(xxxx.jpg)#在单元格A1处添加图片
sheet0.add_image(imageins,A1)
wb.save(6.xlsx) #保存文件
共勉东汉·班固《汉书·枚乘传》“泰山之管穿石单极之绠断干。水非石之钻索非木之锯渐靡使之然也。”
-----指水滴不断地滴可以滴穿石头
-----比喻坚持不懈集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习点个赞和关注吧谢谢大家。