openpyxl 模块的使用
参考博客:https://www.cnblogs.com/anpengapple/p/6399304.html?utm_source=itdadao&utm_medium=referral
在使用openpyxl模块前,需要了解openpyx中名称的概念:
在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells
Workbook:指一个excel工作表;
Sheet:指工作表中的一张表;
Cell:指表中的一个单元格。
openpyx在读或写时顺序为:打开Workbook,定位Sheet,操作Cell
openpy常用方法
使用office新建一个xlsx文件。(注意,不要使用Pycharm工具新建,避免出现错误。zipfile.BadZipFile: File is not a zip file )
xlsx文件名为:网站新增用户.xlsx
内容如下:
一、读取xlsx
1 2 3 4 | from openpyxl import load_workbook #首先导入库 wb = load_workbook( "网站新增用户.xlsx" ) #打开xlsx文件 print (wb.sheetnames) #sheetnames是获取工作表中的所有表的表名,即可查看该xlsx文件里面所有表 <br>sheetname=wb.sheetnames[0] #获取工作表中的第一张表的表名。注意:get_sheet_names()方法已经停止使用了。继续使用会进行警告。 |
#sheet = wb.get_sheet_by_name("表一") 读取到指定的Sheet(表),注意get_sheet_by_name()方法已经未使用。通过['表名']直接读取指定的sheet(表)
sheet=wb["表一"] #读取指定的sheet(表)
'''
获取指定的sheet表也可以写成下列方式:
sheetname=wb.sheetnames[0] 获取工作表中第一张表的表名
sheet=we[sheetname]
'''
注意:get_sheet_by_name()方法已经未使用了,继续使用会出现警告:DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
![](https://img2018.cnblogs.com/blog/1040820/201810/1040820-20181011150335770-447077252.png)
读取到指定的Sheet(表),sheet就变得神奇了,想要的内容都在这里。比如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | print ( "A列:" ,sheet[ "A" ]) #读取A列 print ( "1行:" ,sheet[ "1" ]) #读取第1行 print ( "C4格的值:" ,sheet[ "C4" ].value) #读取C4格的值 #最大/最小行列数获取的是表中的数据区域 print ( "最大行数为:" ,sheet.max_row) #最大行数 print ( "最大列数为::" ,sheet.max_column) #最大列数 print ( "最小行数为:" ,sheet.min_row) #最小行数 print ( "最小列数为:" ,sheet.min_column) #最大列数 print ( "第一行第一列的单元格值为:" ,sheet.cell(row = 1 ,column = 1 ).value) #获取第一行第一列单元格的值 print ( "\n" ) print ( "表中C列中所有值为:" ) for i in sheet[ "C" ]: print (i.value, end = " " ) # 读取C列中的所有值 print ( "\n" ) print ( "表中2行中所有值为:" ) for j in sheet[ "2" ]: |
二、写入xslx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from openpyxl import workbook #导入库 wb = workbook.Workbook() #创建一个新工作表 sheet = wb.active #找到活动的sheet页 sheet.title = 'new sheet' #空的excel表默认的sheet页就叫Sheet,如果想改名字,可以直接给title属性赋值 ''' 这个属性是可读可写的。当然,这个只针对当前活动页,别的页的话,可以用create_sheet和remove_sheet进行添加和删除。 往sheet页里面写内容就比较简单了,跟读一样. ''' sheet[ 'C3' ] = 'Hello world!' for i in range ( 10 ): sheet[ "A%d" % (i + 1 )].value = i + 1 sheet[ "E1" ].value = "=SUM(A:A)" #我们还可以进行花式操作,比如写写公式: wb.save( '保存一个新的excel.xlsx' ) #最后记得保存 |
执行结果:
注意:上面的写入操作是新建一个工作表,针对于已有的工作表进行写入:
1 2 3 4 5 6 7 8 | from openpyxl import load_workbook fp = load_workbook( "保存一个新的excel.xlsx" ) sheet = fp[ "new sheet" ] sheet[ 'c1' ] = '新写入的内容' fp.save( "保存一个新的excel.xlsx" ) |
针对于已有的工作表进行写入,需注意以下几点:
1、在写入完成后,还是需要通过save方法进行保存,sheetname还是使用该文件名,会自动进行覆盖。
2、需写入的表,再打开的状态下是不能成功执行代码的,会报错:PermissionError: [Errno 13] Permission denied
其实这里还是有点小问题的,就是当我先用load_workbook读取一个excel,修改之后save成原来的文件,会报错:PermissionError: [Errno 13] Permission denied
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步