封装openpyxl,更加方便处理 excel(中级)

学习了基础的 Excel 操作后,对其进行了封装, 为了使用框架时更加方便的调用

废话不多说,直接上代码,需要可以直接使用(写了详细的备注)

import openpyxl

class ExcelHandle(object):
    """ excel封装 """

    def __init__(self):
        """ 也可以把文件名和表名写到init里面 """
        pass

    def select_form(self, file_name, sheet_name):
        """
        选择表单,判断传入的 sheet_name 是整数根据索引,不是整数根据表单名处理
        :param file_name: excel文件路径
        :param sheet_name: 表单的名字或者索引
        """
        wb = openpyxl.load_workbook(file_name)
        if isinstance(sheet_name, int):
            try:
                return wb.worksheets[sheet_name]
            except IndexError:
                print(‘输入的表单索引有误‘)
        elif isinstance(sheet_name, str):
            try:
                return wb[sheet_name]
            except KeyError:
                print(‘输入的表单名称有误‘)
        else:
            print(‘输入有误,请输入表单索引或表单名称‘)

    def read_one_data(self, file_name, sheet_name, row, column):
        """
        读取 一个单元格的数据 , 根据第几行第几个获取数据
        :param file_name: excel文件路径
        :param sheet_name: 表单的名字或者索引
        :param row: 行
        :param column: 列
        :return:
        """
        sheet = self.select_form(file_name, sheet_name)
        return sheet.cell(row, column).value

    def read_line(self, file_name, sheet_name, line):
        """
        读取 一列单元格的数据
        :param file_name: excel文件路径
        :param sheet_name: 表单的名字或者索引
        :param line:
        """
        # 调用上面选择表单
        sheet = self.select_form(file_name, sheet_name)
        # 获取单元格
        sheet_data = sheet[line]
        # 元组 (Cell(1,1), Cell(1,2)
        data = []
        for c in sheet_data:
            data.append(c.value)
        return data

    def read_all(self, file_name, sheet_name, start_row=2, start_column=1):
        """
        读取所有的数据,
        :param file_name: excel文件路径
        :param sheet_name: 表单的名字或者索引
        :param start_row: 从第几‘行‘开始
        :param start_column: 从第几‘列‘开始
        :return:
        """
        sheet = self.select_form(file_name, sheet_name)
        # 使用 列表推导式  列表中的索引开始是从 1 开始, 而不是 0
        header = [colmn.value for colmn in sheet[1]]
        data = []
        # sheet.max_row 获取最大行数
        for row in range(start_row, sheet.max_row + 1):
            row_data = []
            # sheet.max_column 获取最大列数
            for column in range(start_column, sheet.max_column + 1):
                row_data.append(sheet.cell(row, column).value)
            # 把标题头和输入组合成字典 把两个列表组合成字典
            row_data = dict(zip(header, row_data))
            data.append(row_data)
        return data

    @staticmethod
    def write(file_name, sheet_name, row, column, data):
        """
        保存数据,使用 静态方法 一次修改一个
        :param file_name: excel文件路径
        :param sheet_name: 表单的名字
        :param row: 修改数据的‘行‘
        :param column: 修改数据的‘列‘
        :param data: 修改的内容
        :return:
        """
        wb = openpyxl.load_workbook(file_name)
        # todo 使用 get_sheet_by_name 会告诉你这个函数被弃用了
        #  sheet = wb.get_sheet_by_name(sheet_name)
        # 建议使用
        sheet = wb[sheet_name]
        sheet.cell(row, column).value = data
        # 保存关闭
        wb.save(file_name)
        wb.close()

if __name__ == ‘__main__‘:
    eh = ExcelHandle()
    # 获取表单
    print(eh.select_form(r‘D:\data.xlsx‘, 0))
    # 一个数据
    print(eh.read_one_data(r‘D:\data.xlsx‘, 0, 1, 1))
    # 获取所有数据
    print(eh.read_all(r‘D:\data.xlsx‘, 0))
    # 保存数据
    eh.write(r‘D:\data.xlsx‘, ‘Sheet1‘, 1, 1, ‘URL‘)

原文地址:https://www.cnblogs.com/yongzhuang/p/12181080.html

时间: 2024-10-25 07:50:39

封装openpyxl,更加方便处理 excel(中级)的相关文章

利用openpyxl模块来操作Excel

python 读写 excel 有好多选择,但是,方便操作的库不多,在我尝试了几个库之后,我觉得两个比较方便的库分别是 xlrd/xlwt.openpyxl. 之所以推荐两个库是因为这两个库分别操作的是不同版本的 excel,xlrd操作的是 xls/xlxs 格式的 excel,而 openpyxl 只支持 xlxs 格式的excel,openpyxl使用起来会更方便一些,所以如果你只操作 xlxs 文件的话,那么可以优先选择 openpyxl,如果要兼容 xls 的话,那就用 xlrd/xl

openpyxl库实现对excel文档进行编辑(追加写入)

首先,这个库只支持xlsx格式的excel文件 预期,对”excel_test.xlsx“的A1单元格写入”hello word“ 1.安装”openpyxl“库,pip install openpyxl 2.导入openpyxl库 import openpyxl 3.读取excel文件 xfile = openpyxl.load_workbook(path+'\\excel_test.xlsx') 4.获取需要写入的”Sheet“名称,案例里的sheet名为”Sheet1“ sheet = x

Python openpyxl、pandas操作Excel方法简介与具体实例

本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据分析模块Pandas也提供pandas.read_excel.pandas.DataFrame.to_excel功能. 那么openpyxl的库有哪些优缺点呢: 优势: 1.openpyxl提供对pandas的dataframe对象完美支持: 2.openpyxl支持后台静默打开excel文件: 3

python3使用xlrd、xlwt、xlutils、openpyxl、xlsxwriter操作excel

特色简介 xlrd主要用来读excel,针对.xls格式: xlwt主要用来写excel,针对.xls格式: xlutils结合xlrd可以达到修改excel文件目的,需要注意的是你必须同时安装这三个库: openpyxl读写.xlsx格式的excel: xlsxwriter可以写excel文件并加上图表,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始. xlrd import xlrd #打开excel data = xlrd.open_workbook('dem

封装一个ExcelHelper,方便将Excel直接转成Datatable对象

1 public class ExcelHelper 2 { 3 /// <summary> 4 /// Excel转换成DataTable 5 /// </summary> 6 /// <param name="excelFilePath">excel文件路径</param> 7 /// <param name="sheetNum">sheet序号</param> 8 /// <para

Python操作excel的几种方式--xlrd、xlwt、openpyxl

openpyxl xlrd xlwt 在处理excel数据时发现了xlwt的局限性–不能写入超过65535行.256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中行数和列数有此限制),这对于实际应用还是不够的.为此经过一番寻找发现了一个支持07/10/13版本Excel的openpyxl,虽然功能很强大,但是操作起来感觉没有xlwt方便.下面分别说下几个模块的常用操作. xlrd xlrd是用来从Excel中读写数据的,但我平常只用它进行读操作,写操作会遇到些问

python 模块openpyxl读excel文件

使用openpyxl模块来读取excel. 先看一下操作前的excel是什么样子吧.对了,现在只支持xlsx格式的excel读取 我现在想在第三行插入3,3,3怎么办呢? #!/usr/bin/env python # _*_ coding:utf-8 _*_ # 导入excel读取模块 from openpyxl import load_workbook from openpyxl.cell import get_column_letter # 将excel文件加载到内存对象中 wb = lo

python通过openpyxl操作excel

python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作,也就是对后缀为xlsx进行操作. Excel 主要有三大元素,工作簿,Sheet 页,单元格,一个工作簿可以包含多个Sheet页面,而Sheet页由N多个单元格组成,而单元格主要用来存储数据: 一.安装插件 pip install openpyxl 二.创建Excel文件 操作excel之前,首先

python+openpyxl的excel的相关读写

def test(): wb2 = openpyxl.Workbook() #创建一个excel对象 wb2.save("a.xlsx") #保存excel并命名为a.xlsx wb2 = openpyxl.load_workbook('a.xlsx') #加载excel数据 sheets2 = wb2.sheetnames #获取excel的sheet表集合 sheet2 = wb2[sheets2[0]] #获取excel的第一个sheet表 print(sheet2['a1'].