Excel 的基础用法。手工如何操作 Excel, python 学习手工如何操作Excel
手工操作 Excel 的流程 1, 打开Excel 文件 (路径 + 文件名) 2, 获取表单 3, 使用行号,和列号去确定需要读取的数据 4, 关闭文件
python 操作 Excel, 工具
openpyxl, 支持 xlsx 新型格式的读写, 读取速度还可以。tablib, 支持多种格式读写。 xlsx, xls, csv, json, yaml, html, pdxlrd, 经典的 Excel 读取库,xlwt,pandas, 功能强,太臃肿了安装: pip install openpyxl
获取表单: 1,wb.active, 被选中,被激活 2,通过索引, wb.worksheets[索引] 3,通过sheet名字, wb[‘sheet_name’] 实例代码:
import openpyxl # 读取 Excel 文件夹 # 读取文件之前一定要关闭该文件 # windows下面的路径有反斜杠 # 得到一个 Workbook 对象 wb = openpyxl.load_workbook(r'd:\cases.xlsx') print(wb) # 不直接去获取_sheets 属性,称为私有属性。 print(wb._sheets) # self._sheets # active 是表示被激活,被选择的 sheet active_sheet = wb.active # sheetnames 和 _sheets 有什么区别?? # sheetnames 列表当中存储的是字符串, _sheets 里面存储是对象。 # 获取所有表单的正确用法 # wb.worksheets # # 获取某一个表单, #1, 通过索引去获取 sheet = wb.worksheets[0] #TODO 2.正规用法(提倡使用的方法) # sheet = wb['Sheet1'] # print(sheet) # Pycharm 不支持 sheet.属性的提示。 # 读取单个单元格, 行和列 # 行和列是从 1 开始的,不是 python 当中从 0 开始 cell = sheet.cell(1, 2) print(cell) # # # 获取 cell 的值, 很多同学会忘记加上 value print(cell.value) # # # 获取某一行 print(sheet[1]) # # 获取值: for column in sheet[1]: print(column.value) # # # # 获取某一列 print(sheet['A']) # # # 如何获取多行。 1 到 3 行, 第三行是包含的。 print(sheet[1:3]) # 获取所有t的数据 toal_data = list(sheet.rows) print(toal_data) for row in toal_data: for cell in row: print(cell.value) # 写称类 # 写入。一个单元格, # 保存, save("文件名称") wb.save(r'd:\cases.xlsx') # 关闭 wb.close()对处理excel的功能进行封装成模块,对有需求处理表格的可以调用这个模块的功能: excel_handler.py模块具有以下功能: 1、打开表单
2、读取标题 头部
3、读取所有的数据
4、指定单元格写入数据(使用静态方法,不要使用实例方法) 代码如下:
""" 1、打开表单 2、读取标题 头部 3、读取所有的数据 (类型是) 4、指定单元格写入数据(使用静态方法,不要使用实例方法) """ from openpyxl import load_workbook from openpyxl.worksheet.worksheet import Worksheet class ExcelHandler(): """操作 Excel """ def __init__(self, file): """初始化函数""" self.file = file # self.wb = load_workbook(file) def open_sheet(self, name) -> Worksheet: """打开表单. 在函数或者方法的后面 加 -> 类型:表示此函数返回值是一个 这样的类型 函数注解。 """ wb = load_workbook(self.file) sheet = wb[name] wb.close() return sheet 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) # 获取标题 data = [] for row in rows[1:]: row_data = [] for cell in row: row_data.append(cell.value) # 列表转成字典:要和 header 去 zip data_dict = dict(zip(self.header(sheet_name), row_data)) data.append(data_dict) return data @staticmethod def write(file, sheet_name, row, column, data): """写入 Excel 数据""" wb = load_workbook(file) sheet = wb[sheet_name] # 修改单元格 sheet.cell(row, column).value = data # 保存 wb.save(file) # 关闭 wb.close() if __name__ == '__main__': excel = ExcelHandler(r'd:\cases.xlsx') excel.write(r'd:\cases.xlsx', 'Sheet1', 5, 1, 'data_value') # 读取表中数据 dd=excel.read("Sheet1") print(dd) #获取表头信息 hh = excel.header("Sheet1") print(hh)