对excel操作进行简单的封装

使用xlrd和xlutils.copy,把取excel的行数、列数、行值、列值、单元格值和写入已有的excel都做了封装。

# coding=utf-8
__date__ = '2019/8/15 8:47'
__author__ = 'Allen'

import xlrd
from xlutils.copy import copy


class OperExcel:
    """
    实例化时传file_name和sheet_id
    """
    def __init__(self, file_name=None, sheet_id=None):
        # 判断文件是否存在,不存在就给一个默认值
        if file_name:
            self.file_name = file_name
        else:
            self.file_name = r"./file/test.xlsx"
        # 判断sheet_id是否存在,不存在默认0
        if sheet_id:
            self.sheet_id = sheet_id
        else:
            self.sheet_id = 0

        self.tables = self.get_tables()     # 直接把获取的excel数据赋给变量

    # 获取excel的表数据
    def get_tables(self):
        data = xlrd.open_workbook(self.file_name)
        tables = data.sheet_by_index(self.sheet_id)
        return tables

    # 取得excel的行数
    def get_row_num(self):
        num_of_row = self.tables.nrows
        return num_of_row

    # 取得excel的列数
    def get_col_num(self):
        num_of_col = self.tables.ncols
        return num_of_col

    # 根据行号,找到该行的内容
    def get_row_values(self, row):
        row_data = self.tables.row_values(row)
        return row_data

    # 根据列号,找到该列的内容
    def get_col_values(self, col):
        col_data = self.tables.col_values(col)
        return col_data

    # 取得excel某一单元格的值
    def get_cell_value(self, row=0, col=0):
        value_of_cell = self.tables.cell_value(row, col)
        return value_of_cell

    # 用于在已有的excel中写入数据,注意xlutils对xlsx格式不支持,使用xls格式
    def write_value(self, row, col, value):
        """
        写入excel数据
        row, col, value
        """
        read_data = xlrd.open_workbook(self.file_name)
        write_data = copy(read_data)                    # 复制一份excel数据
        sheet_data = write_data.get_sheet(0)            # 获取sheet数据
        sheet_data.write(row, col, value)               # 写入数据
        write_data.save(self.file_name)                 # 保存excel


if __name__ == '__main__':
    oper = OperExcel()
    print(oper.get_cell_value(0, 0))

 

以下是一个简单的 Python Excel 文件读写操作的类封装示例: ```python import pandas as pd class ExcelFile: def __init__(self, file_path): self.file_path = file_path self.data = None # 读取 Excel 文件 def read_file(self): try: # 使用 pandas 库读取 Excel 文件 self.data = pd.read_excel(self.file_path) except FileNotFoundError: print(f"File {self.file_path} not found.") # 写入 Excel 文件 def write_file(self): try: # 将数据写入到 Excel 文件中 writer = pd.ExcelWriter(self.file_path) self.data.to_excel(writer, index=False) writer.save() print(f"File {self.file_path} saved successfully.") except: print(f"Failed to save file {self.file_path}.") # 测试代码 if __name__ == "__main__": # 创建 ExcelFile 对象 excel_file = ExcelFile("example.xlsx") # 读取 Excel 文件 excel_file.read_file() if excel_file.data is not None: print(excel_file.data) # 写入 Excel 文件 new_data = {"Name": ["John", "Mary", "Peter"], "Age": [30, 25, 40]} df = pd.DataFrame(new_data) excel_file.data = df excel_file.write_file() ``` 在这个示例中,我们定义了一个名为 `ExcelFile` 的类,这个类封装Excel 文件的读取和写入操作。在初始化函数中,我们传入一个文件路径,并将其保存为类的属性。`read_file` 函数尝试读取这个文件,并将读取到的数据保存为类的属性。`write_file` 函数将类的属性中的数据写入到对应的文件中。 在测试代码中,我们首先创建一个 `ExcelFile` 对象,并调用 `read_file` 函数来读取一个名为 `example.xlsx` 的 Excel 文件,并将读取到的数据输出到控制台。然后我们创建一个新的 DataFrame 对象,并将其保存为 `ExcelFile` 对象的属性,最后调用 `write_file` 函数将这个 DataFrame 中的数据写入到一个名为 `example.xlsx` 的 Excel 文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值