• Python3 处理excel文件(openpyxl库)


    openpyxl 介绍

    openpyxl是一个用于读/写 XLSX/XLSM/XLTX/XLTM文件的python库。openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls后缀的文件,需要使用 xlrd和xlwt库进行操作。虽然xlrd和xlwt也可以进行文件读写,但是感觉不能对一个文件同时进行读写操作,我用的时候感觉不是很方便,用openpyxl库可以对一个文件同时进行读写操作(这里的同时指的是在一个py文件只打开关闭一次文件,但可以进行读和写操作,不涉及多线程)

    openpyxl 基本操作

    新建文件、加载已有文件

    import openpyxl
    # 如果openpyxl不存在,在cmd中执行 pip insatll openpyxl下载库
    
    # 新建一个空excel,文件名为test,表名为sheet(默认创建),
    wb = openpyxl.Workbook()  # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)
    wb.save('test.xlsx')
    # 载入已存在的xslx文件
    wb = openpyxl.load_workbook("test.xlsx")
    

    表操作

    wb.create_sheet("my_sheet1") # 给文件添加指定名称的工作表
    wb.create_sheet(index=1, title="my_sheet2") # 可通过index控制创建的表的位置, index从0开始
    sheet_names = wb.sheetnames# 得到工作簿的所有工作表名 结果: ['Sheet','my_sheet2','my_sheet1']
    # 根据表名获取工作表
    sheet = wb["my_sheet1"]
    # 根据表名删除sheet表
    wb.remove(wb["my_sheet1"])
    

    读数据

    max_row = sheet.max_row # 最大行数
    max_col = sheet.max_column # 最大列数
    value = sheet.cell(row=1, column=1).value # 获取第1行第1列位置的数据,坐标最小从1开始[xlrd和xlwt是从0开始,要注意一下]
    value = sheet["A1"].value # 获取A列第一个数据
    list_row = sheet[1] # 获取第一行数据,行数最小从1开始,数据单元类型为openpyxl.cell.cell.Cell,读取值需要list_row[0].value
    list_col = sheet['A'] # 获取A列的数据
    
    

    写数据

    sheet.cell(row=1,column=1,value=1) # 在sheet工作表(1,1)位置写1
    sheet["B1"] = "B1"  # 直接修改B1列第1个单元格的值为B1
    sheet["B2"] = "B2"  # 新增B2单元格的值为B2
    wb.save("test.xlsx") # 最后要保存才有效果
    

    调整表格样式

    # ------------------ 表格样式调整 ------------------
    # 表格样式支持:字体、颜色、模式、边框、数字格式等
    # A1单元格 等线24号加粗斜体,字体颜色浅蓝色
    sheet["A1"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)
    # B1单元格 水平上下居中
    sheet["B1"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
    # 第一行高度设置为30
    sheet.row_dimensions[1].height = 30
    # C列的宽度设置为35
    sheet.column_dimensions["C"].width = 35
    wb.save("test.xlsx")
    

    如有不当之处,欢迎指出,谢谢!

    参考链接

  • 相关阅读:
    一套简单通用的Java后台管理系统(SpringBoot +Security + Layui实现一套权限管理后台模板)
    org.thymeleaf.exceptions.TemplateInputException: Error resolving template [cart/getCurrentUserCartItem], template might not exist or might not be accessible by any of the configured Template Resolvers
    ARTS-WEEK-009
    ARTS-WEEK-008
    从一次外卖到对oauth2.0的思考
    网络滴神,TCP!
    浪里来浪里去!网络协议如何成就网上冲浪?
    IO、NIO实现简单聊天室,附带问题解析
    IntelliJ IDEA 中使用 Lambok (注解无效问题的解决)
    M5310-A 版本
  • 原文地址:https://www.cnblogs.com/wshbolgs/p/14334329.html
Copyright © 2020-2023  润新知