对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))

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值