zoukankan      html  css  js  c++  java
  • 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')
  • 相关阅读:
    假期小作业1
    Python_day4
    Python_day3
    Python_day2
    12/06
    12/05
    python系统学习:第三周之简单的三级菜单
    python系统学习:第二周之字典应用
    python系统学习:第二周之字符串函数练习
    python系统学习:第二周之购物车功能
  • 原文地址:https://www.cnblogs.com/hherbk/p/12725142.html
Copyright © 2011-2022 走看看