import xlrd
from xlutils.copy import copy


class OperationExcel:
    def __init__(self, file_name=None, sheet_id=None):
        """
        构造函数,调用方法的时候。就要知道excel地址,和响应的sheed_id。也就是调用这个函数的时候就要知道,想要操作的数据在哪里
        :param file_name: excel的文件路径,可以默认存在一个地方
        :param sheet_id: sheet,第一个是0.依次向下
        """
        if file_name:
            self.file_name = file_name  # 传的话就是用传的地址
            self.sheet_id = sheet_id
        else:
            self.file_name = r'D:\p22naf\util\stu_1.xls'  # 不传的话就用给定的地址
            self.sheet_id = 0  # 0是第一个sheet
        self.data = self.get_data()         #self.data就会excel里面内容的一个对象

    # 获取某一页sheet对象
    def get_data(self):
        data = xlrd.open_workbook(self.file_name)
        tables = data.sheets()[self.sheet_id]
        return tables

    # if __name__ == '__main__':
    #     opers = OperationExcel()
    #     print(opers.get_data().nrows)

    # 获取单元格的行数
    def get_lines(self):
        tables = self.data
        return tables.nrows
    #结果是5行

    # 获取某一个单元格的内容
    def get_cell_value(self, row, col):     #如:传入0 1,就是年龄。row是行,col是列。都是从0开始
        return self.data.cell_value(row, col)

    # 写入数据 如下:传入的数据是5,4,100   调用的时候,EXcel不能是打开状态
    def write_value(self, row, col, value):
        '''
        写入excel数据
        row,col,value
        '''
        read_data = xlrd.open_workbook(self.file_name)
        write_data = copy(read_data)
        sheet_data = write_data.get_sheet(0)
        sheet_data.write(row, col, value)
        write_data.save(self.file_name)

    # 根据对应的caseid 找到对应行的内容
    # def get_rows_data(self, case_id):
    #     row_num = self.get_row_num(case_id)
    #     rows_data = self.get_row_values(row_num)
    #     return rows_data
    # 
    # # 根据对应的caseid找到对应的行号
    # def get_row_num(self, case_id):
    #     num = 0
    #     clols_data = self.get_cols_data()
    #     for col_data in clols_data:
    #         if case_id in col_data:
    #             return num
    #         num = num + 1

    # if __name__ == '__main__':
    #     opers = OperationExcel()
    #     print(opers.get_row_num("mary3"))
    #结果:3

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

    # 获取某一列的内容
    def get_cols_data(self, col_id=None):
        if col_id != None:
            cols = self.data.col_values(col_id)
        else:
            cols = self.data.col_values(0)
        return cols


if __name__ == '__main__':
    opers = OperationExcel()
    print(opers.get_row_num("mary1"))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐