当前位置:   article > 正文

【办公自动化】全网最全python中openpyxl库用法_import openpyxl as

import openpyxl as

python中的opepyxl库是一个用于读写Excel2010版本以上的xlsx/xlsm/xltx/xltm文件的Python库,拥有十分强大的功能。

此篇文章介绍openpyxl中的大部分功能。

一.创建新工作簿

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件1.xlsx"#文件1.xlsx在文件夹中是没有的
  3. fp=VBA.Workbook(path)#根据路径创建新的工作簿
  4. fp.save(path)#保存工作簿(这是openpyxl库中使用完都要进行的步骤,切记切记1)

二.打开旧工作簿

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"#文件2.xlsx在文件夹中是已经存在的
  3. fp=VBA.load_workbook(path)#根据路径打开旧的工作簿
  4. fp.save(path)

三.工作表的查找删除创建与复制

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. fp=VBA.load_workbook(path)
  4. wb=fp.worksheets#显示该工作簿中所有的工作表
  5. print(wb)
  6. fp.save(path)

该操作会输出的工作表名不是xlsx中相同的名称

   这是xlsx中的表名:

 这是openpyxl中输出的表名:

 由上面两张图片可以知道,openpyxl中会多出来“Worksheet”这个字符串,所以若想得到单纯的表名,需要进行进一步的操作。

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"#文件2.xlsx在文件夹中是已经存在的
  3. fp=VBA.load_workbook(path)#根据路径打开旧的工作簿
  4. wb=fp.worksheets#显示该工作簿中所有的工作表
  5. for i in wb:#将所有工作表进行遍历
  6. print(i.title)#title方法的功能是提取工作表名
  7. fp.save(path)
  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. fp=VBA.load_workbook(path)
  4. """
  5. 以下操作是删除,创建与复制工作表
  6. """
  7. wst=fp['小红']
  8. fp.remove(wst)#remove方法的功能是删除工作表对象,切记里面参数是工作表对象,而不是工作表名称
  9. fp.remove(fp['小红'])#也可以这样的书写方式
  10. fp.save(path)
  11. fp.create_sheet('小强')#create_sheet方法的功能是创建工作表,参数为工作表名称
  12. fp.save(path)
  13. wst2=fp.copy_worksheet(fp['小强'])#copy_worksheet方法的功能是复制工作表,参数为工作表对象
  14. wst2.title='小丽'#对新复制的工作表修改名称
  15. fp.save(path)

四.获取单元格内容

1.获取单个单元格内容

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. fp=VBA.load_workbook(path)
  4. wst=fp['小强']
  5. #wst=fp.worksheets[0] #第二种获取工作表的方式,获取工作簿中的第一个工作表(不建议这么使用)
  6. cells=wst['A1'].value#value方法的功能是输出'小强'工作表中'A1'单元格的值
  7. #cells=wst.cell(row=1,column=1).value #也可以采取cell方法去获取单元格,row为行,column为列
  8. for i in range(1,10,2):
  9. print(i,wst.cell(row=i,column=2).value)#可以输出奇数行,第二列的数据

2.获取一个范围内的单元格

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. fp=VBA.load_workbook(path)
  4. wst=fp['小强']
  5. cell_range=wst['A1:E5']#获取范围:A1:E5
  6. for data in cell_range:
  7. print(data) #这个for循环是按行提取单元格
  8. for rows in cell_range:
  9. for data in rows:
  10. print(data.value)#这个for提取的是各个单元格的数据
  11. a=list(wst.values)#单元格内容按行组成元组
  12. print(a)
  13. b=list(wst.values)[1:3]#通过切片,输出第二行和第三行数据
  14. print(b)
  15. range_=wst.iter_rows(min_row=1,max_row=1,min_col=1,max_col=5)#指定范围提取,min_row为最小行,max_row为最大行,min_col为最小列,max_col为最大列。
  16. for rows in cell_range:
  17. for cells in rows:
  18. print(cells.value) #按行,依次输出单元格值
  19. wst=fp['小强']
  20. for cols in wst.columns:
  21. for cells in cols:
  22. print(cells.value)#按列输出单元格

3.动态输出(当每个表格大小不一样时,只需要确认起始位置就可以输出整个表格)

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. fp=VBA.load_workbook(path)
  4. wst=fp['小强']
  5. row_max=wst.max_row#得到该表中表格的最大行
  6. row_col=wst.max_column#得到该表中表格的最大列
  7. cell_range=wst.iter_rows(min_row=1,max_row=row_max,min_col=1,max_col=row_col)#关键在这一步
  8. for rows in cell_range:
  9. for cells in rows:
  10. print(cells.value) #按行,依次输出单元格值

五.写入与插入数据

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. path1="C:/openpyxl/文件4.xlsx"
  4. fp=VBA.load_workbook(path)
  5. wst=fp['小强']
  6. wst['G2']='新写入的数据'#写入数据方式1
  7. fp.save(path)#保存于同一个文件
  8. fp.save(path1)#另存
  9. wst.cell(1,8,value='新写入的数据')#写入数据方式2(不建议使用)
  10. liebiao=['(6,1)','(6,2)','(6,3)','(6,4)','(6,5)']
  11. wst.append(liebiao) #按行写入了字符类型的数据
  12. fp.save(path)
  13. for rows in wst['G1:H4']:
  14. for cells in rows:
  15. cells.value=520
  16. fp.save(path)#一个指定范围内写入内容
  17. wst.insert_cols(idx=2,amount=5)#idx参数是指在第几列开始插入,amount参数指插入几列数据(如果没有填,默认为1)
  18. wst.insert_cols(2,5)#这种填写方式也行,但是参数顺序不能改变,以下方法也是如此
  19. wst.insert_rows(idx=2,amount=5)#idx参数是指在第几列开始插入,amount参数指插入几列数据(如果没有填,默认为1)
  20. wst.delete_rows(2,5)#idx参数是指在第几列开始删除,amount参数指删除几列数据(如果没有填,默认为1)
  21. fp.save(path)

6.移动与冻结单元格

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. path1="C:/openpyxl/文件4.xlsx"
  4. fp=VBA.load_workbook(path)
  5. wst=fp['小强']
  6. wst.move_range("A1:C3",rows=5,cols=10) #向下移行,向右移列,参数为负数为反方向
  7. wst.freeze_panes="C3"#冻结指定单元格,往下滚动,小于该行不懂,向右滚动,小于该列不动
  8. wst.freeze_panes="A1"#解冻,只需把参数改为"A1"就可以啦
7.合并单元格.公式.分组.批注,字体,对齐
  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. path1="C:/openpyxl/文件4.xlsx"
  4. fp=VBA.load_workbook(path)
  5. wst=fp['小强']
  6. wst.merge_cells("A1:G20")#合并单元格
  7. wst.unmerge_cells("A1:G20")#取消合并单元格
  8. wst.save(path)
  9. wst.merge_cells(start_row=1,staer_column=1,end_row=5,end_column=5)#合并单元格
  10. #使用公式
  11. fp=VBA.load_workbook(path,data_only=True)
  12. wst['C1']='=sum(A1:B1)'
  13. print(wst['C1'].value)
  14. #分组
  15. wst.column_dimensions.group('A','D',hidden=True)
  16. fp.save(path)
  17. wst.row_dimensions.group(1,4,hidden=True)
  18. #批注
  19. 批注=VBA.comments.Comment('这里要写批注','使用人')
  20. wst['Y1'].comment=批注
  21. #装饰:字体与对齐等
  22. 字体对象=VBA.styles.Font(name=u'微软雅黑',bold=True,italic=False,size=48,vertAlign=None)#bold参数指的是’是否加粗‘,italic参数指的是’是否斜体‘,vertAlign指的是“是否为上标”
  23. wst['A1'].font=字体对象
  24. 对齐对象=VBA.styles.Alignment(horizontal='general',vertical='bottom',text_rotation=0,wrap_text=False,shrink_to_fit=False,indent=0)

这是修改字体是相关参数

 

8.边框,填充,行高和列宽

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. path1="C:/openpyxl/文件4.xlsx"
  4. fp=VBA.load_workbook(path)
  5. wst=fp['小强']
  6. #边框
  7. side=VBA.styles.Side(style='thin',color='FF000000')
  8. border=VBA.styles.Border(left=side,right=side,top=side,bottom=side)
  9. wst['A1'].border=border
  10. fp.save(path)
  11. #locked(指定是否锁定单元格)
  12. #hidden(指定是否隐藏公式)
  13. #行高和列宽
  14. wst.row_dimensions[1].height=200
  15. wst.column_dimensions['B'].height=100
  16. fp.save(path)

 9.插入图片

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. path1="C:/openpyxl/文件4.xlsx"
  4. fp=VBA.load_workbook(path)
  5. wst=fp['小强']
  6. picture=VBA.drawing.image.Image('图片所在路径')
  7. picture.height=100#图片的高
  8. picture.width=70#图片的宽
  9. wst.add_image(picture,'A1')#将图片放到A1单元格里面
  10. wst.save(path)

10.制作柱状图

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. path1="C:/openpyxl/文件4.xlsx"
  4. fp=VBA.load_workbook(path)
  5. wst=fp['小强']
  6. #新建一个柱状图
  7. chart=VBA.chart.BarChart()
  8. #设定数据的范围(可以包含图例)
  9. data=VBA.chart.Reference(wst,min_row=1,max_row=5,min_col=2,max_col=3)
  10. #x轴
  11. project=VBA.chart.Reference(wst,min_row=2,max_row=5,min_col=1)
  12. #添加数据
  13. chart.add_data(data,titles_from_data=True)
  14. #设定项目
  15. chart.set_categories(project)
  16. wst.add_chart(chart,'E1')
  17. fp.save(path)

11.制作折线图

  1. import openpyxl as VBA
  2. path="C:/openpyxl/文件2.xlsx"
  3. path1="C:/openpyxl/文件4.xlsx"
  4. fp=VBA.load_workbook(path)
  5. wst=fp['小强']
  6. chart=VBA.chart.LineChart()
  7. data=VBA.chart.Reference(wst,min_row=2,max_row=3,min_col=2,max_col=13)
  8. project=VBA.chart.Reference(wst,min_row=1,min_col=2,max_col=13)
  9. chart.add_data(data,form_rows=True,titles_from_data=True)
  10. chart.set_categories(project)
  11. fp.add_chart(chart,'A9')

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/828699
推荐阅读
相关标签
  

闽ICP备14008679号