zoukankan      html  css  js  c++  java
  • 【openpyxl】简单入门——日常工作够用了

    适用于Excel 2010 xlsx/xlsm/xltx/xltm  

    MS office 2010后的文件,都采用XML格式进行压缩,所以Openpyxl不能适用于2010前的Excel文件了。

    操作非常简单,直接上手。

    名称解释

    名词 解释 备注
    Excel文件 工作薄 xlsx,xlsm,xltx,xltm
    sheet 工作表 又叫谢特、翔哥
    row,rows  
    column,columns  
    cell 单元格  

    安装

    pip install openpyxl

    创建/读取

    from openpyxl import Workbook # 创建要用的
    from openpyxl import load_workbook # 读文件要用的
    # 创建
    wb = Workbook()
    wb.save('谢特.xlsx')
    # 读取
    wb2 = load_workbook('谢特.xlsx')找到处于工作状态的谢特
    ws = wb.active # 自动生成新xlsx,一般自带一个谢特,名字叫‘sheet’

    新建sheet

    ws_1 = wb.create_sheet() #不带参数,就按(sheet,sheet1,sheet2...)命名
    ws_2 = wb.create_sheet(0) # 不输入名字参数,只能使用0这个位置参数
    ws_3 = wb.create_sheet(-1) # >>>TypeError: expected string or bytes-like object

     .create_sheet() 有 title 和 index 两个参数,title是文件名,index有三种状态。

    ws1 = wb.create_sheet('从最后插入的谢特')  #从最后插入
    ws2 = wb.create_sheet('从前面插入的谢特',0) #从前面插入
    ws3 = wb.create_sheet('从倒数第二位插入的谢特',-1) #倒数第二位插入

    关于sheet的名字

    #改sheet的名字
    ws_1.title = 'ok'
    
    #设置sheet标签的颜色 ws1.sheet_properties.tabColor = '1072BA'#蓝色
    #
    用名字调取谢特 w4 = wb['ok'] print(w4) #<Worksheet "ok">
    #
    取出工作簿中所有谢特的名字 print(wb.sheetnames) #列表
    #
    >>> ['从前面插入的谢特', 'Sheet', 'ok', 'Sheet2', 'Sheet3', '从倒数第二位插入的谢特', '从最后插入的谢特']

    #还可以使用循环打印谢特的名字 for sheet in wb: print(sheet.title)

    一个单元格cell

    #获取单元格
    c = ws['A4']
    print(c) #打印出来的不是值,是对象:<Cell 'Sheet'.A4>
    #给单元格赋值 3种方式
    ws['A4'] = 4 
    d = ws.cell(row=4, column=4, value=10)
    d.value = 15

    多个单元格cell

    #选区域
    cell_range = ws['A1':'C2']
    #选列
    cal_C = ws['C']
    cal_CtoE = ws['C':'E'] # 多列
    #选行
    row_10 = ws['10']
    row_1to6 = ws['1':'6'] # 多行

    遍历

    #使用迭代器读取行
    for row in ws.iter_rows(min_row=1, max_row=2, max_col=3):
        for cell in row:
            print(cell)
    
    #使用迭代器读取列
    for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
        for cell in col:
            print(cell)
    # 如果在‘read-only’模式下是不能用的
    
    # 遍历所有行或列
    print(tuple(ws.rows))
    print(tuple(ws.columns))

    这里的 ws.rows 和 ws.columns 说得所有,是指激活过的那种。所谓激活就是只要鼠标点过就算,所有如果要标准化读取固定数据时,最好把不用的单元设置为禁止编辑。

    最重要的部分——单元格的数据

    # 调用单元格属性
    cell.value
    # 迭代器的values_only参数设置
    for row in ws.iter_rows(min_row=1,max_col=3,max_row=4, values_only=True):
        print(row)
    for col in ws.iter_cols(min_row=1, max_col=3, max_row=5, values_only=True)print(cell)
    # 如果在‘read-only’模式下是不能用的

    其他高级运用直接看官方文档吧,还有画图什么的。

  • 相关阅读:
    useState 的介绍和多状态声明(二)
    PHP:相对于C#,PHP中的个性化语法
    PHP:IIS下的PHP开发环境搭建
    PHP:同一件事,有太多的方式
    Javascript:再论Javascript的单线程机制 之 DOM渲染时机
    Javascript:拦截所有AJAX调用,重点处理服务器异常
    DDD:谈谈数据模型、领域模型、视图模型和命令模型
    .NET:再论异常处理,一个真实的故事
    Javascript:由 “鸭子类型” 得出来的推论
    Workflow:采用坐标变换(移动和旋转)画箭头
  • 原文地址:https://www.cnblogs.com/watalo/p/12423908.html
Copyright © 2011-2022 走看看