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')
  • 相关阅读:
    Realtime crowdsourcing
    maven 常用插件汇总
    fctix
    sencha extjs4 command tools sdk
    首次吃了一颗带奶糖味的消炎药,不知道管用不
    spring mvc3 example
    ubuntu ati driver DO NOT INSTALL recommand driver
    yet another js editor on windows support extjs
    how to use springsource tools suite maven3 on command
    ocr service
  • 原文地址:https://www.cnblogs.com/hherbk/p/12725142.html
Copyright © 2011-2022 走看看