Python-openpyxl工具类(未完成)

使用Python操作Excel表格写入数据,后续更新Java版。

"""
@Title: MjExcel
@Time: 2024/1/30 9:45
@Author: Michael
"""

import os
import re

from openpyxl import Workbook, load_workbook
from openpyxl.cell import Cell
from openpyxl.worksheet.worksheet import Worksheet


class MjExcel:
    # 字母表
    letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
               "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
               "U", "V", "W", "X", "Y", "Z"]

    # 构造函数
    def __init__(self, path: str = None):
        """
        :param path: excel文件路径,若为空则创建新文件,默认创建一个名为"Sheet"的工作表
        """
        self.path = path
        if MjExcel.isNoneStr(path):
            # 新建文件
            self.xlsx = Workbook()
        else:
            if not os.path.isfile(path):
                raise Exception("非文件路径!")
            post = path.lower().split(".")[-1]
            if post != "xlsx":
                raise Exception("非xlsx文件!")
            self.xlsx = load_workbook(path)
        self.sheets = self.get_sheets()  # 所有的工作表
        self.cur_sheet = None  # 当前的工作表
        self.set_cur_sheet()

    # 设置当前的工作表
    def set_cur_sheet(self, key: str | int = None):
        """
        :param key: 工作表名称/索引,若为空则返回第一个
        :return:
        """
        self.cur_sheet = self.get_sheet(0) if key is None else self.get_sheet(key)

    # 获取工作表的工作区域大小
    def get_sheet_shape(self, sheet: Worksheet | str | int = None) -> tuple:
        """
        :param sheet: 工作表/名称/索引,若为空则返回当前工作表大小
        :return: tuple
        """
        sheet = self.__get_sheet_by_type(sheet)
        return sheet.max_row, sheet.max_column

    # 获取所有的工作表
    def get_sheets(self, remove_empty: bool = False) -> list[Worksheet]:
        """
        :param remove_empty: 是否剔除空白的工作表
        :return: list[Worksheet]
        """
        self.sheets = self.xlsx.worksheets
        if not remove_empty:
            return self.sheets
        # 根据工作表大小判断
        sheets = []
        for worksheet in self.sheets:
            if self.get_sheet_shape(worksheet) == (1, 1):
                continue
            sheets.append(worksheet)
        return sheets

    # 获取所有的工作表名称
    def get_sheets_name(self) -> list[str]:
        """
        :return: list[str]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值