zoukankan      html  css  js  c++  java
  • 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

    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("
    ")
    print("表中C列中所有值为:")
    for i in sheet["C"]:
    	print(i.value, end=" ")              # 读取C列中的所有值
    
    print("
    ")
    
    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

     

  • 相关阅读:
    Serverless 工程实践 | Serverless 应用开发观念的转变
    如何高效学习 Kubernetes 知识图谱?
    互动赠新书|当云原生遇到混合云:如何实现“求变”与“求稳”的平衡
    5 款阿里常用代码检测工具,免费用!
    AI与传统编译器
    OpenArkCompiler方舟编译
    传统编译原理
    LLVM基础技术图例
    双极型与低频大功率晶体管
    TVM,Relay,Pass
  • 原文地址:https://www.cnblogs.com/benpao1314/p/9773412.html
Copyright © 2011-2022 走看看