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

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

一.创建新工作簿

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

二.打开旧工作簿

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

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

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

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

这是xlsx中的表名:

这是openpyxl中输出的表名:

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

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

四.获取单元格内容

1.获取单个单元格内容

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

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

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

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

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

五.写入与插入数据

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

6.移动与冻结单元格

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

这是修改字体是相关参数

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

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

 9.插入图片

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

10.制作柱状图

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

11.制作折线图

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

【办公自动化】全网最全python中openpyxl库用法相关推荐

  1. python中openpyxl库用法详解

    openpyxl模块是一个读写Excel 文档的Python库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档. openpyxl.load_workbook(地址) - 打开 ...

  2. python中os库用法详解(总结)

    os库主要是对文件和文件夹进行操作,在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能. 具体步骤如下: 1. 导⼊os模块 import os 2. 使⽤ os 模块相关功能 os.函 ...

  3. python中cpca库用法详解(从文本中提取省市区)

    一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块. 首先安装cpca库: pip install cpca Github: GitHub - DQinYuan/c ...

  4. python中IPy库用法详解

    使用python遍历所有的ip,可以借助第三方库IPy来获取所有的ip. 安装IPy库: pip install IPy 1.遍历IP网段中所有IP并打印个数 示例代码1: import IPydef ...

  5. python中flask_caching库用法详解(缓存)

    为了尽量减少缓存穿透,并同时减少web的响应时间,可以针对那些需要一定时间才能获取结果的函数和那些不需要频繁更新的视图函数提供缓存服务,可以在一定的时间内直接返回结果而不是每次都需要计算或者从数据库中 ...

  6. python中ipaddress库用法详解

    ipaddress库提供了处理IPv4与IPv6网络地址的类.这些类支持验证,查找网络上的地址和主机,以及其他常见的操作. 示例代码1: import ipaddressx = ipaddress.i ...

  7. python中ipaddr库用法详解

    首先安装ipaddr库 pip install ipaddr 判断一个IP地址是否在某个网段内: import ipaddrip = ipaddr.IPv4Address("192.168. ...

  8. python中dns库用法详解(DNS处理模块)

    dnspython是python 实现的一个dns场景的工具包. dnspython(http://www.dnspython.org/)是Python实现的一个DNS工具包,它支持几乎所有的记录类型 ...

  9. python中gzip库用法详解(压缩和解压缩)

    1.使用gzip创建一个文件: 示例代码: import gzip# 创建一个gzip文件 content = "Hello world!" f = gzip.open('file ...

最新文章

  1. Axure RP使用攻略--入门级(五)系统函数与变量
  2. 给刚入职开发人员的几句心里话
  3. A Simple Problem with Integers
  4. java 构造方法和析构方法_PHP面向对象程序设计之构造方法和析构方法详解
  5. HDU 1728 逃离迷宫【BFS】
  6. [leetcode] 740.删除并获得点数
  7. 如何把nodejs应用和SAP云平台上的Redis实例做绑定
  8. 在UnitTest中读取*.config文件的郁闷
  9. SpringMvc @RequestParam、 @RequestBody、@RequestPart 的区别
  10. 金额输入框校验和自动校正、支持指定任意位数小数decimal、支持只能输入整数、支持是否允许输入负数等功能
  11. 程序员:工作3年了,为啥越来越不值钱……
  12. web服务中使用线程池减少时间的方法
  13. python机器学习库keras——线性回归、逻辑回归、一般逻辑回归
  14. BI系统的应用组织思路与数据分析模式
  15. java后台开发程序媛~~
  16. GPS经纬度 转化为 M
  17. qq邮箱 服务器认证失败怎么回事,为什么我的QQ邮箱登录不了 QQ邮箱无法登陆怎么解决...
  18. Get DAOS ObjectCount and Size with LotusScript
  19. 高中政治老师教师资格证考试成功通过前辈备考经验分享(2)
  20. 手机摄影技巧总结——永远拍出美美的照片

热门文章

  1. php floor intval,php取整函数floor(),round(),intval(),ceil()
  2. 苹果怎么付费购买内存_对于苹果手机加内存你怎么看?
  3. JavaWeb视频网站开发:实现首页小喇叭的功能
  4. python pls_偏最小二乘(pls)回归分析
  5. 掌控板+麦轮,Mixly + Blynk,让你的麦轮战甲嗨炸全场!
  6. python selenium刷新页面_python selenium 解决页面刷新后元素找不到问题
  7. 我是一个硬盘(别以为是笑话,其实很感人)
  8. NCBI:UniGene数据库
  9. Movavi Video Editor Plus v21.3.0(程序安装包+素材安装包)
  10. 我的世界java版记分板_我的世界计分板怎么用 我的世界计分板指令一览