参考博客: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

from openpyxl import load_workbook  #首先导入库

wb=load_workbook("网站新增用户.xlsx") #打开xlsx文件
print(wb.sheetnames) #sheetnames是获取工作表中的所有表的表名,即可查看该xlsx文件里面所有表
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]).
 
 
读取到指定的Sheet(表),sheet就变得神奇了,想要的内容都在这里。比如:    
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

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') #最后记得保存

  执行结果:

注意:上面的写入操作是新建一个工作表,针对于已有的工作表进行写入:

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

 

最新文章

  1. k8s总结(图片打开略慢请知晓)
  2. dedecms recommend 注入 exp
  3. poj 2954 Triangle(Pick定理)
  4. 手动实现KVO
  5. 本地存储(cookie&sessionStorage&localStorage)
  6. 关于extjs中动态添加TabPanel的tab项并以iframe显示的整理
  7. apache apr介绍
  8. single page
  9. 【POJ2094】【差分序列】Angry Teacher
  10. cocos2d-x中的Tiled地图
  11. 【Maven】pom.xml 配置 eclipse错误
  12. 使用pfile 启动oracle 实例时,启动失败---db_recovery_file_dest參数值在os上不存在。
  13. IBM openblockchain学习(四)--crypto源代码分析
  14. Python学习日记:day8-------文件操作
  15. 《Redis入门指南》第2版 读书笔记
  16. 在ubuntu18.04上安装EOS
  17. 实验吧 smali文件分析
  18. C++ Primer 笔记——转发
  19. Kitematic when login show Error:Tunning socket could not be established
  20. Apache和Tomcat的区别?

热门文章

  1. leetcode 854. K-Similar Strings
  2. springboot 2 集成 redis 缓存 序列化
  3. Install- Linux必学的60个命令
  4. windows 常用的快捷键
  5. CentOS设置打开终端快捷键
  6. 装配SpringBean(三)--XML方式实例
  7. DP学习之路(1) 01背包
  8. 《DSP using MATLAB》Problem 7.34
  9. 《DSP using MATLAB》Problem 7.29
  10. Tensorflow通过CNN实现MINST数据分类