python第三方库openpyxl处理excel数据

Excel 的基础用法。手工如何操作 Excel, python 学习手工如何操作Excel

手工操作 Excel 的流程
1, 打开Excel 文件 (路径 + 文件名)
2, 获取表单
3, 使用行号,和列号去确定需要读取的数据
4, 关闭文件

python 操作 Excel, 工具

  • openpyxl, 支持 xlsx 新型格式的读写, 读取速度还可以。
  • tablib, 支持多种格式读写。 xlsx, xls, csv, json, yaml, html, pd
  • xlrd, 经典的 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)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值