• python操作excel


    python操作Excel

    openpyxl模块

    0.介绍

    openpyxl是一个Python库,用于读取/写入Excel 2010 xlsx / xlsm / xltx / xltm文件。

    它的诞生是因为缺少可从Python本地读取/写入Office Open XML格式的库。

    作为openpyxl,对PHPExcel团队的所有赞誉最初都是基于PHPExcel。

    安全

    默认情况下,openpyxl不能防范二次爆炸或数十亿次的xml笑话攻击。为了防止这些攻击,请安装defusedxml。

    必知

    在使用openpyxl模块前,需要了解openpyx中名称的概念:

    在openpyxl中,主要用到三个概念:Workbook,Sheet,Cell

    Workbook:指一个工作簿;

    Sheet:指工作簿中的一张表;
    Cell:指表中的一个单元格。

    openpyxl在读或写时顺序为:打开Workbook,定位Sheet,操作Cell

    1. 安装

    pip3 install openpyxl
    

    2. 创建工作簿

    from openpyxl import Workbook
    
    wb = Workbook()
    

    创建一个工作簿之后,会默认生成一个工作表 (Sheet) 。您可以使用Workbook.active属性来获取它

    ws = wb.active
    
    默认情况下设置为0。除非您修改其值,否则始终将使用此方法获得第一个工作表。
    

    3. 创建工作表

    通过 Workbook.create_sheet( ) 方法创建新的工作表

    Workbook.create_sheet( ) 的参数依次是title=表名,索引=index,默认索引追加在默认的Sheet表后面

    # 创建两张表
    
    sheet1 = wb.create_sheet('表1')
    sheet2 = wb.create_sheet('表2')
    
    # 表的顺序(Sheet,表1,表2)
    

    4. 保存工作簿

    # 保存工作簿,filename='文件的地址'
    # 如果文件名相同的话,后面的文件会覆盖原来文件的内容
    
    wb.save('demo.xlsx')
    

    5. 数据的三种写入方式

    5.1 通过定位单元格写入

    # 语法: 表['单元格名称'] = '值'
    
    sheet1['A1'] = '我是A1' # 不区分大小写
    

    5.2 通过行列定位

    # 通过row(行),column(列),定位指定单元格 添加数据
    
    # 第二行第一列的单元格
    sheet1.cell(row=2, column=1).value = '你好'
    

    5.3 通过append方法

    append( )方法的参数是一个可迭代对象, 可以批量添加, 而且自带默认换行.

    # append(iterable)追加,默认从当前表格的末尾追加,自动换行
    
    sheet1.append(['我是A1', '我是B1', '我是C1'])
    sheet1.append(['我是A2', '我是B2', '我是C2'])
    
    # 一次追加多行
    data_list = [
        ['1','2','3'],
        ['4','5','6'],
        ['7','8','9'],
    ]
    for item in data_list:
        sheet1.append(item)
    

    6. 读取本地工作簿

    6.1 获取本地工作簿对象

    wb = openpyxl.load_workbook(r'D:demo1.xlsx')
    

    6.2 获取工作簿下的所有表名

    # 返回一个列表,每个元素都是表名
    names = wb.sheetnames
    
    # 通过for循环查询
    for sheet in wb:
         print(sheet.title) # 表.title = '表名'
    

    6.3 获取工作簿的表

    • wb.active

      始终获取当前工作簿的第一张表

    • 通过表名的key

      ws = wb['表1']
      
    • 通过表名获取

      ws = wb.get_sheet_by_name('表1')
      

    6.4 循环获取由表格的值组成的矩阵

    • 即循环表格中的值,这种方法,不能设置读取范围
    for row in ws.values:
        print(row) # row是每行的数据组成的元组
    

    6.5 可设置范围的读取

    循环表中的每一行

    可以设置范围 range_string= 'A1:B1' 矩阵范围

    min_row=1,min_col=1 最小行从第1行,最小列从第1列 开始默认到数据最大行最大列

    max_row=3,max_col=3 最大行只到第3行 ,最大列只到第3列 默认从第一行第一列开始

    values_only=True 只读

    for row in ws.iter_rows(min_row=2, min_col=2):
        for cell in row:
            print(cell.value) # cell.value = '单元格的值'
    

    关于三个对象的常用属性

    wb.sheetnames 返回工作簿下的所有表名
    wb.active 返回第一张表
    ws.title 表名
    cell.value 单元格的值
  • 相关阅读:
    struts2-dojo-plugin-2.3.1.2.jar!/struts-plugin.xml:29:119
    谈论高并发(十二)分析java.util.concurrent.atomic.AtomicStampedReference看看如何解决源代码CAS的ABA问题
    linux安装QQ
    Android:创建耐磨应用
    僵尸网络
    几个比较好的网站
    几点基于Web日志的Webshell检测思路
    Redis异常JedisConnectionException:Read timed out解决笔记
    ELk 几篇好的文章
    深入了解linux下的last命令及其数据源
  • 原文地址:https://www.cnblogs.com/xcymn/p/12942869.html
Copyright © 2020-2023  润新知