程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

python操xls

发布于2019-08-06 17:14     阅读(614)     评论(0)     点赞(1)     收藏(2)


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"))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

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



所属网站分类: 技术文章 > 博客

作者:yoyo

链接:https://www.pythonheidong.com/blog/article/9102/fd4e9dc6c081acc2e32b/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)