Python Excel 处理模块 : Openpyxl

OpenPyXL模块使用方法

以下是介绍OpenPyXL的基本使用,不涉及样式和合并单元格的跨行操作

一般来说,对于大名鼎鼎的xlrd,xlwt和xlutils三个模块,Excel操作有3个基本状态

  1. 已有Excel表,只需要读取(xlrd)

  2. 没有Excel表,只需要创建,并且只是写入数据(xlwt)

  3. 有Excel表,需要读取,又需要写入(以xlutils为中介的xlrd和xlwt运用)

     我一开始接触就是它们3个,但是在我是应用中,觉得它们有点局限性,即使是有xlutils将xlrd和xlwt融合后.  
     我当时想读取一个表里面的一个sheet,然后处理数据,并新建一个sheet输出,而且为了防止一些可能的意外,导致要第二次运行程序,重写新表数据,所以还要进行新建表重复判断删除.  
     很遗憾的是它们3个混合是无法进行删除的,虽然意外可能不怎么会发生,但是我调试代码的时候,每次都要打开Excel文件删除sheet,贼烦的
    

不多废话了,安装也很简单: pip install openpyxl 即可。注意的是Openpyxl模块是仅支持XLSX格式的Excel表格,XLS表格是无法进行操作的。

使用方法在代码里面以多行注释: ''' 表示

import openpyxl
# 导入openpyxl模块
def ExcelOperate(path):

    # Window 路径替换  因为.save(path)是需要用"/"路径的
    path=path.replace('\\','/')


    # 这里我只分两种情况:有Excel表和无Excel表的情况:

    # 第一种情况:有Excel表
    # 加载已有的Excel表格
    Book=openpyxl.load_workbook(path) 
    
    # 得到第1个Sheet的名字,并用名字获取Sheet对象
    Sheet = Book[Book.sheetnames[0]]

    # 遍历整个Sheet有效行(Sheet.iter_rows()就能获取当前Sheet全部有效行)
    for row in Sheet.iter_rows():
        # 获取到单行的全部内容,使用下标来获取某行的单元格,再使用value方法读取单元格内容。
        print(row[1].value)
    
    # 修改内容。行为1,列为2的单元格内容改为:测试
    Sheet.cell(row=1, column=2, value="测试")

    # 保存覆盖原有文件
    Book.save(path)


    '''
        openpyxl.load_workbook()      加载Excel文档
        Book[name]                    获取名为name的sheet,
        Book.sheetnames()             这个是获取Book的所有sheet名,以list的形式返回
        Sheet.iter_rows()             把sheet里全部内容以行的形式返回
        Sheet.rows                    直接遍历行需要转list或tuple后以下标来读取(外加.value)
        Sheet.cell(row,column,value)  修改指定行列的单元格内容

        注意:get系列的方法已经是弃用了的
        如果使用弃用方法并不会报错,但是会在命令行提示使用新的方法
        (例如:get_sheet_names(),执行会提示:Deprecated: Use wb.sheetnames)

    '''

OpenPyxl样式模块

from openpyxl.styles import *
posted @ 2022-10-06 16:01  StarDarkMonarch  阅读(133)  评论(0编辑  收藏  举报