封装Python 处理 Excel 表中数据类, 读取或修改

**1. 实现读取指定行 / 指定列数据 ;
2. 实现修改指定行 / 指定列数据;
3. 实现按照行读取全部数据 **

import pandas as pd


class ExcelHandler:
    def __init__(self, file_path):
        """
        初始化ExcelHandler类,加载Excel文件
        :param file_path: Excel文件路径
        """
        self.file_path = file_path
        self.data = pd.read_excel(file_path)

    def get_row(self, row_index):
        """
        获取某一行数据
        :param row_index: 行索引(从0开始)
        :return: 该行数据,返回为pandas的Series
        """
        if row_index < 0 or row_index >= len(self.data):
            raise IndexError("行索引超出范围")
        return self.data.iloc[row_index]

    def get_column(self, col_name):
        """
        获取某一列数据
        :param col_name: 列名
        :return: 该列数据,返回为pandas的Series
        """
        if col_name not in self.data.columns:
            raise ValueError(f"列名 '{col_name}' 不存在")
        return self.data[col_name]

    def update_row(self, row_index, new_data):
        """
        修改某一行数据
        :param row_index: 行索引(从0开始)
        :param new_data: 新的行数据(list或pandas的Series类型,长度需与列数一致)
        """
        if row_index < 0 or row_index >= len(self.data):
            raise IndexError("行索引超出范围")
        if len(new_data) != len(self.data.columns):
            raise ValueError("新数据长度与列数不匹配")
        self.data.iloc[row_index] = new_data

    def update_column(self, col_name, new_data):
        """
        修改某一列数据
        :param col_name: 列名
        :param new_data: 新的列数据(list或pandas的Series类型,长度需与行数一致)
        """
        if col_name not in self.data.columns:
            raise ValueError(f"列名 '{col_name}' 不存在")
        if len(new_data) != len(self.data):
            raise ValueError("新数据长度与行数不匹配")
        self.data[col_name] = new_data

    def get_all_data(self):
        """
        获取整个表的数据
        :return: 该表的数据,返回为pandas的DataFrame
        """
        return self.data

    def save(self, save_path=None):
        """
        保存修改后的数据到Excel文件
        :param save_path: 保存文件的路径,如果未指定,将覆盖原文件
        """
        if save_path is None:
            save_path = self.file_path
        self.data.to_excel(save_path, index=False)

    def print_all_rows(self):
        """
        打印DataFrame中的所有行
        """
        return self.data.iterrows()


# 示例使用
if __name__ == "__main__":
    # 创建ExcelHandler对象
    excel_handler = ExcelHandler("1.xlsx")

    # 打印所有行的数据
    print("所有行的数据:")
    excel_handler.print_all_rows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值