当前位置:   article > 正文

Python操作Excel_sheet.rows

sheet.rows

 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])

  1. # 获取所有数据
  2. total_data = list(sheet.rows)
  3. print(total_data)
  4. for row in total_data:
  5. for cell in row:
  6. print(cell.value)
  7. # 写入, 一个单元格
  8. # 保存,save('文件名称')
  9. wb.save(r'd:\cases.xlsx')
  10. # 关闭
  11. wb.close()

封装Excel

excel_handler.py

  1. import openpyxl
  2. from openpyxl.worksheet.worksheet import Worksheet
  3. class ExcelHandler():
  4. def __init__(self, file):
  5. self.file = file
  6. def open_sheet(self, name) -> Worksheet:
  7. """
  8. 在方法后面加 -> 指向类型,代表这个方法返回的类型是这个
  9. 加了Worksheet 类,下面的sheet就会有提示
  10. :param name:
  11. :return:
  12. """
  13. wb = openpyxl.load_workbook(self.file)
  14. sheet_name = wb[name]
  15. return sheet_name
  16. # 获取表头数据
  17. def header(self, sheet_name):
  18. sheet = self.open_sheet(sheet_name)
  19. headers = []
  20. for i in sheet[1]:
  21. headers.append(i.value)
  22. return headers
  23. # 获取所有数据
  24. def read(self, sheet_name):
  25. sheet = self.open_sheet(sheet_name)
  26. rows = list(sheet.rows)[1:]
  27. data = []
  28. for row in rows:
  29. data_row = []
  30. for cell in row:
  31. data_row.append(cell.value)
  32. # 是以列表形式存储的
  33. data.append(data_row)
  34. return data
  35. # 写入数据
  36. @staticmethod
  37. def write(file, sheet_name, row, column, new_data):
  38. wb = openpyxl.load_workbook(file)
  39. sheet = wb[sheet_name]
  40. sheet.cell(row, column).value = new_data
  41. wb.save(file)
  42. wb.close()
  43. if __name__ == '__main__':
  44. excel = ExcelHandler(r'd:\cases.xlsx')
  45. # data = excel.read('Sheet1')
  46. excel.write(r'd:\cases.xlsx', 'Sheet1', 3, 1, 'data_new')
  47. # print(data)

用字典的形式存储

  1. # 获取所有数据
  2. def read(self, sheet_name):
  3. sheet = self.open_sheet(sheet_name)
  4. rows = list(sheet.rows)[1:]
  5. data = []
  6. for row in rows:
  7. data_row = []
  8. for cell in row:
  9. data_row.append(cell.value)
  10. # 用字典的形式存储
  11. # 列表转成字典,要和header 去zip
  12. data_dict = dict(zip(self.header(sheet_name), data_row))
  13. data.append(data_dict)
  14. return data

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/768627
推荐阅读
相关标签
  

闽ICP备14008679号