python使用openpyxl能够同时读取和修改Excel文档

237 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

openpyxl介绍:

openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。 openpyxl模块只支持xlsx/xlsm/xltx/xltm格式,不支持xls格式。 openpyxl的官方文档地址在这里:官网文档 安装方式:

打开命令行窗口,执行命令 pip install openpyxl

openpyxl的简单使用入门

使用之前导入模块:

import openpyxl as op

写文件

1、创建一个工作簿,同时创建一个工作表sheet: wb = op.Workbook() 2、创建新的sheet的两种方式: ws = wb.create_sheet() 在指定位置创建工作表 ws = wb.create_sheet(index=0) 3、设置工作表sheet名字 ws.title = '工作表1' print(ws.title) 4、上面两步可以使用一句代码实现:创建自定义名字的sheet ws = wb.create_sheet('工作表2',0) 5、修改sheet表,改变工作表标签颜色,默认为无颜色 ws.sheet_properties.tabColor = "F22F27" 6、激活工作簿,获取index=0的工作表 ws = wb.active 7、在单元格写入数据: ws['A1'] = 42 在A1单元格写入 ws.cell(row=1, column=2, value=42) 在B1单元格写入 ws.cell(1,3).value= 42 在C1单元格写入 8、新增一行数据:传入数组 ws.append([1, 2, 3, 4]) 9、保存工作簿 wb.save('openpyxl.xlsx')


当一个工作表被创建时,其中不包含单元格,只有当单元格被获取时才被创建。 这种方式我们不会创建我们从不会使用的单元格,从而减少了内存消耗;


读文件



def read():
    ''''''
    filename = 'H:/openpyxl.xlsx'
    #打开文件
    wb = op.load_workbook(filename=filename)
    ws = wb.active
    print(ws.max_row)     # 获取工作表最大行
    print(ws.max_column)  # 获取工作表最大列
    print(ws.calculate_dimension())  # 获取工作表全部数据的单元格区域
    
    #获取所有sheet
    for sheet in wb:
        print(sheet.title)
    
    #复制工作表
    ws_1 = wb.copy_worksheet(ws)
    ws_1.title = 'copy'
    print(ws.title)
    #获取所有工作表sheet
    print(wb.sheetnames)
    #根据名字获取sheet
    ws_2 = wb['copy']
    #删除sheet
    wb.remove(ws_1)
    #del wb['copy']
    print(wb.sheetnames)

#read()

def readRange():

    filename = 'H:/openpyxl.xlsx'
    #打开文件
    wb = op.load_workbook(filename=filename)
    ws = wb.active
    
    #获取单个单元格值
    cell_A2 = ws['A2']
    cell_B2 = ws.cell(row=2, column=2)
    print(cell_A2.value, cell_B2.value)
    
    # 通过行/列
    print(ws['A'])        #A列
    print(ws['A:B'])      #A、B列
    print(ws[2])             #第2行
    print(ws[2:5])        #2-5行
    
    # 迭代所有行
    all_by_row = ws.rows 
    # 迭代所有列
    all_by_col =ws.columns
    print(all_by_row,all_by_col)
    #获取多个单元格值
    cell_area = ws['A1':'B3']
    for rows in cell_area:
        for cells in rows:
            print(cells.value)


写入图片

image.png