zoukankan      html  css  js  c++  java
  • openpyxl模块操作Excel

    1.openpyxl模块了解

    1.excel版本问题
        03版本之前的excel文件后缀名xls
            03版本之后的excel文件后缀名xlsx
    
    2.python操作excel表格的模块
        openpyxl
            针对03版本之前的excel不是太兼容
        xlrd(读)、xlwt(写)
            兼容03版本之前和之后的
     https://www.cnblogs.com/yangmeichong/p/10873920.html
    openpyxl其实也是pandas模块操作excel的底层模块
    
    # 下载
    pip3 install openpyxl
    参考网站:https://openpyxl.readthedocs.io/en/stable/

    2.Excel文件生成

    from openpyxl import Workbook
    
    # 生成一个excel文件对象
    wb = Workbook()
    
    # 创建工作簿,默认是在sheet后面
    # w1 = wb.create_sheet('test')
    # wb1 = wb.create_sheet('test',0)  # 还可以指定索引参数调整test位置
    # 调整工作簿的位置
    w1 = wb.create_sheet('工作簿01',index=0)
    w2 = wb.create_sheet('工作簿02')
    w3 = wb.create_sheet('工作簿03')
    
    # 二次修改工作簿名称
    w1.title = 'MySheet01'
    
    # 保存文件
    wb.save(r'aaa.xlsx')

    3.openpyxl写数据

    w1 = wb.create_sheet('工作簿01',index=0)
    
    # 写数据方式1
    # w1['A1'] = 666
    # 写数据方式2:在第2行第1列写数据999
    # w1.cell(row=2,column=1,value=999)
    
    # 插入公式,注意等号一定要加,还可以写函数(比如excel支持的求和,求差等很多常见的函数)
    # w1['A5'] = '=sum(A1:A2)'
    
    # 创建表字段数据
    w1.append(['序号','姓名','年龄','爱好'])
    # 添加表单数据
    w1.append([1,'jason',18,'read'])
    w1.append([2,'tony',28,'music'])
    w1.append([3,'tom',38,'play'])
    
    # 数据多了
    w1.append([4,'jerry',38,'play','江苏'])  # 没有列字段对应
    # 数据少了
    w1.append([5,48,'run'])
    """
    针对缺失的数据 用None或者''占位
    """
    w1.append([6,None,48,'run'])
    w1.append([7,'',66,'read'])
    
    
    # 保存文件
    wb.save(r'bbb.xlsx')

    4.openpyxl读取数据

    from openpyxl import load_workbook
    
    
    wb = load_workbook(r'bbb.xlsx',data_only=True)
    #
    read_only=True 当读取一个较大的文件时,如果不适用这个参数会导致产生“MemoryError”错误,文件都加载到内存,导致内存空间不足报错
    # wb = load_workbook('1.xlsx',read_only=True,data_only=True)
    # 获取所有工作簿的名称
    # print(wb.sheetnames)  # ['工作簿01', 'Sheet']
    
    # 指定你需要操作的工作簿
    w1 = wb['工作簿01']
    
    # 读取数据方式1
    # print(w1['A1'].value)
    # 读取数据方式2
    # print(w1.cell(row=2,column=1).value)
    
    # 读取公式单元格数据    默认只能获取到公式
    # print(w1['A5'].value)  # =sum(A1:A2)
    """如果需要获取公式计算之后的结果
    1.wb = load_workbook(r'aaa.xlsx',data_only=True)
    2.针对代码生成的excel文件需要你去操作一下
    """
    # 读行数据
    # for row in w1.rows:
    #     row_data = [r.value  for r in row]
    #     print(row_data)
    # 读列数据
    # for col in w1.columns:
    #     col_data = [c.value  for c in col]
    #     print(col_data)
    
    print(w1.max_row)  # 查看总共有多少行数据
    print(w1.max_column)  # 查看总共有多少列字段
  • 相关阅读:
    Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)
    Eclipse 创建文件快捷菜单、避免格式化时自动换行、.properties文件中文乱码、在线安装FreeMarker
    Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象
    Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)
    Java Servlet(一):创建工程(jdk7+tomcat7+eclipse)
    FlashFXP5_gr坑爹的故事
    数据库备份,及清理备份计划
    Could not load file or assembly'System.Data.SQLite.dll' or one of its depedencies
    ASP.NET MVC中,怎么使用jquery/ajaxForm上传文件
    Bootstrap modal被sliverlight掩盖。
  • 原文地址:https://www.cnblogs.com/yangmeichong/p/14167243.html
Copyright © 2011-2022 走看看