python中操作excel数据

python操作excel,python有提供库

本文介绍openpyxl,他只支持新型的excell( xlsx)格式,读取速度还可以

1.安装

pip install openpyxl

2.使用

2.1获取excel文件夹,注意:windows下面的路径有反斜杠,加一个r进行区分

wb = openpyxl.load_workbook(r'd:cases.xlsx')

  

2.2获取所有表单

sheet=wb.worksheets#获取所有的表单,并把它赋值给sheet


sheet=wb.worksheets[0]#通过索引获取具体的一个表单

sheet=wb['sheet1']#可以通过表单名获取,这样获取到了表单,但是用sheet.方法名时,就没有自动提示方法了,如下图所示(pycharm的锅)  

  

2.3读取内容,需要提供行号和列号,注意“行号和列号是从1开始的,因为是excel中,并不是python中

#1.获取某个单元格
sheet=wb.worksheets#获取所有的单元格
cell=sheet.cell(行号,列号)

cell.value#获取单元格中的值

#2.获取某一行

sheet[1]

#获取某一行的值,不能直接sheet[1].value,因为sheet[1]得到的是元组,而元组没有.value属性,要使用循环

for column in sheet[1]:

print(column.value)


#获取某一列
sheet['A']

#获取多行,切片的方式,如获取1到3行

sheet[1:3]#第3行是包含的


# 获取所有的数据
toal_data = list(sheet.rows)
print(toal_data)

for row in toal_data:#获取到一行
    for cell in row:#获取行中的某一个值
        print(cell.value)
 

  

  

2.4写入 获取到了,直接赋值

2.5 保存

wb.save(文件名)

  

2.6关闭

wb.close()

  

"""
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')
原文地址:https://www.cnblogs.com/hherbk/p/12725142.html