Python-openpyxl表格读取写入

1.为何选择openpyxl模块

xlxd、xlwt、–只能读取,openpyxl、可以读取写入

2.安装

pip install -i https://pypi.douban.com/simple openpyxl==2.6.2

3.处理对象

openpyxl只能处理xlsx格式的excel文件,只能使用办公软件来创建xlsx格式的excel文件,不能使用pycharm来创建
excel对象 -> sheet表单对象 -> cell单元格对象 -> 行和列、值属性
如果excel文件不存在,那么会FileNotFoundError
res = load_workbook(“testcase11.xlsx”)

4.代码案例

from openpyxl import load_workbook
# load_workbook,往往对已存在的excel进行读写操作
class Handle_excel:

    def __init__(self,filename,sheetname = None):
        self.filename = filename
        self.sheetname = sheetname
        
    def read_data(self):
        """
        读取表格数据
        :return:
        """
        wb = load_workbook(self.filename)
        if self.sheetname is None:
            ws = wb.active  # active默认读取第一个表单
        else:
            ws = wb[self.sheetname]    # 读取指定表单

        testcase_list = []  # 所有数据信息
        header_list = []    # 表头信息
        for row in range(1,ws.max_row+1):
            one_row_dict = {}   # 每一行数据信息
            for column in range(1,ws.max_column+1):
                one_cell_value = ws.cell(row,column).value  # cell方法,获取单元格,返回Cell对象
                if row == 1:
                    header_list.append(one_cell_value)
                else:
                    key = header_list[column-1]
                    one_row_dict[key] = one_cell_value
            if row != 1:
                testcase_list.append(one_row_dict)

        return testcase_list

    def write_data(self, row, column, data):
        """
        写操作
        :param row: 指定在某一行写
        :param column: 指定在某一列写
        :param data: 待写入的数据
        :return:
        """
        # 将数据写入到excel中,不能与读取操作公用一个Workbook对象
        # 如果使用同一个Workbook对象,只能将最后一次写入成功,会出现意想不到的结果
        wb = load_workbook(self.filename)
        if self.sheetname is None:
            ws = wb.active
        else:
            ws = wb[self.sheetname]

        # 第一种写入方式:
        # one_cell = ws.cell(row, column)
        # one_cell.value = data

        # 第二种写入方式:
        ws.cell(row, column, value=data)

        # c.PermissionError: [Errno 13] Permission denied: 'testcase.xlsx'
        # 对exel文件修改之后,要保存,一定要将excel文件关闭
        wb.save(self.filename)


if __name__ == "__main__":
    excel_name =“testcase.xlsx"
    sheet_name = "login"
    do_excel = Handle_excel(excel_name,sheet_name)
    print(do_excel.read_data())
    #do_excel.write_data(3,4,5)

你可能感兴趣的:(python,excel)