Posted in Python onNovember 02, 2020
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-openpyxl表格读取写入的案例详解的文章就介绍到这了,更多相关Python表格读取写入内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!
Python-openpyxl表格读取写入的案例详解
- Author -
吴正崇声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@