python 模块 openpyxl 操作Excel

openpyxl 介绍

openpyxl 是一个 Python 库,用于读取/写入 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是由于缺乏现有的库来从 Python 本地读取/写入 Office Open XML 格式而诞生的

安装openpyxl

pip install openpyxl

定义操作Excel的class

import openpyxl

class InAndOutExcel(object):
    """
    读取Excel数据

    :param filePath: 文件路径
    :returns: Excel数据的字典
    """
    def inXlsx(self, filePath):
        workbook = openpyxl.load_workbook(filePath)
        # 获取到excel文件中哪些表有数据
        sheets = workbook.sheetnames
        # 获取到excel文件中的第一张表
        tab = workbook.get_sheet_by_name(sheets[0])
        # 行数
        rows = tab.max_row
        # 列数
        cols = tab.max_column
        print(f"行数: {rows}; 列数: {cols}")
        data = []
        for i in range(1, rows + 1, 1):
            temp = []
            for j in range(1, cols + 1, 1):
                temp.append(tab.cell(i, j).value)
            data.append(temp)

        return data

    """
    读取Excel数据

    :param filePath: 文件路径
    :param data: 需要导出的数据
    """
    def outXlsx(self, filePath, data):

        target_list = data
        # 创建一个workbook对象,并创建一个sheet
        wb = openpyxl.Workbook()
        # 获取当前活跃的worksheet,默认就是第一个worksheet
        ws = wb.active
        rows = len(target_list)
        lines = len(target_list[0])
        for i in range(rows):
            for j in range(lines):
                # 给单元格赋值
                ws.cell(row=i + 1, column=j + 1).value = target_list[i][j]

        # 保存表格
        wb.save(filename=filePath)

使用

import uuid

if __name__ == '__main__':

    inAndOutExcel = InAndOutExcel()
    # 读取Excel
    data = inAndOutExcel.inXlsx(r"D:\aaaaaa\test.xlsx")
    num = 1
    for i in range(len(data)):
        print(num, end="\t")
        print(data[i])
        num += 1

    # 写入Excel
    data = [
        ('a', 'b', 'c', 'd', 'e', 'f'),
        ('aa', 'bb', 'cc', 'dd', 'ee', 'ff'),
        ('aaa', 'bbb', 'cc', 'ddd', 'eee', 'fff')
    ]
    id = str(uuid.uuid1()).replace("-", "")
    fileName = rf"D:\aaaaaa\{id}.xlsx"
    inAndOutExcel.outXlsx(data=data, fileName=fileName)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值