赞
踩
Excel 的基础用法,手工如何操作Excel, 手工操作excel的流程 1、打开Excel文件,(路径+文件名) 2、获取sheet表单 3、使用行号和列号 确定需要读取的数据 4、关闭文件 两个工具 openpyxl,支持xlsx 新型格式的读写,读取速度还可可以 tablib,支持多种格式读写, xlsx、xls、cvs、json、yaml、html,缺点读取速度慢 xlrd, 经典excel 读取库,局限性强,只能读取,不能写 pandas ,功能强大,太臃肿了,搞数据分析的时候可以用 安装openpyxl pip install openpyxl
openpyxl
1、获取workbook
2、获取sheet
3、获取单元格,获取行和列,cell、row、column
# 读取Excel文件
# 读取文件之前,一定要关闭文件
# windows 下面的路径有反斜杠
wb = openpyxl.load_workbook('d:\cases.xlsx')
# active 是表示被激活的,被选择的
sheet active_sheet = wb.active
# sheetnames 列表当中存储的是字符串, _sheets里面存储的是对象
# 获取所有表单的正确用法
work_sheets = wb.worksheets
# 获取某一个表单,1、通过索引去获取
# sheet = wb.worksheets[0]
# print(sheet)
# 2、通过表单名称获取 # 过时,sheet.没有提示
# sheet = wb.get_sheet_by_name('Sheet1')
# print(sheet)
# 正确用法, sheet. 没有提示 sheet = wb['Sheet1']
# 读取单个单元格,行和列
# 行和列 是从1 开始的,不是python当中的 从0 开始的
# 可以从源码看出,第一个入参是行,第二个入参是列 cell = sheet.cell(1, 2) print(cell)
# cell是一个对象,获取cell的值 print(cell.value)
# 获取某一行的数据 print(sheet[1])
# 获取某一行的值 for columm in sheet[1]: print(columm.value)
# 获取某一列 print(sheet['C'])
# 获取多行 1到3 行,第3行是包含的 print(sheet[1:3])
- # 获取所有数据
- total_data = list(sheet.rows)
- print(total_data)
- for row in total_data:
- for cell in row:
- print(cell.value)
-
-
- # 写入, 一个单元格
- # 保存,save('文件名称')
- wb.save(r'd:\cases.xlsx')
- # 关闭
- wb.close()
封装Excel
excel_handler.py
- import openpyxl
- from openpyxl.worksheet.worksheet import Worksheet
-
-
- class ExcelHandler():
- def __init__(self, file):
- self.file = file
-
- def open_sheet(self, name) -> Worksheet:
- """
- 在方法后面加 -> 指向类型,代表这个方法返回的类型是这个
- 加了Worksheet 类,下面的sheet就会有提示
- :param name:
- :return:
- """
- wb = openpyxl.load_workbook(self.file)
- sheet_name = wb[name]
- return sheet_name
-
- # 获取表头数据
- def header(self, sheet_name):
- sheet = self.open_sheet(sheet_name)
- headers = []
- for i in sheet[1]:
- headers.append(i.value)
- return headers
-
- # 获取所有数据
- def read(self, sheet_name):
- sheet = self.open_sheet(sheet_name)
- rows = list(sheet.rows)[1:]
- data = []
- for row in rows:
- data_row = []
- for cell in row:
- data_row.append(cell.value)
- # 是以列表形式存储的
- data.append(data_row)
- return data
-
- # 写入数据
- @staticmethod
- def write(file, sheet_name, row, column, new_data):
- wb = openpyxl.load_workbook(file)
- sheet = wb[sheet_name]
- sheet.cell(row, column).value = new_data
- wb.save(file)
- wb.close()
-
-
-
-
- if __name__ == '__main__':
- excel = ExcelHandler(r'd:\cases.xlsx')
- # data = excel.read('Sheet1')
- excel.write(r'd:\cases.xlsx', 'Sheet1', 3, 1, 'data_new')
- # print(data)

用字典的形式存储
- # 获取所有数据
- def read(self, sheet_name):
- sheet = self.open_sheet(sheet_name)
- rows = list(sheet.rows)[1:]
-
- data = []
- for row in rows:
- data_row = []
- for cell in row:
- data_row.append(cell.value)
- # 用字典的形式存储
- # 列表转成字典,要和header 去zip
- data_dict = dict(zip(self.header(sheet_name), data_row))
- data.append(data_dict)
- return data
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。