**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()