zoukankan      html  css  js  c++  java
  • openpyxl操作excel

    【转】

    openpyxl库可以读写xlsx格式的文件,对于xls旧格式的文件只能用xlrd读,xlwt写来完成了。

    python有很多模块都是用来操作excel的,比如xlrd,xlwt,pyExcelerator。用着很方便,但是问题是,只能支持到 excel2003。虽然一般的应用其实足够了,但是如果遇到了导出大量数据(超过65535条)的需求时,excel2003就不够用了。所以我就只好 去找一个能支持excel2007的模块,google了一下,发现了这个openpyxl。

    创建一个工作簿

    wb = workbook()

    加载已存在excel文件

    filePath = "/data/alic/demo.xlsx"
    wb = load_workbook(filename=filePath)

    选中sheet

    # 选择默认的sheet
    ws = wb.active
    
    # 通过索引加载sheet index从0开始
    ws = wb.worksheets[index]
    
    # 通过sheet名加载 感觉有问题,中文?
    ws = wb.get_sheet_by_name()
    # 这个没有问题
    ws = wb["name"]

    创建sheet

    #默认插在工作簿末尾
    ws = wb.create_sheet() 
    # or
    # 插入在工作簿的指定位置位置 index从0开始
    ws = wb.create_sheet(index)

    更改sheet的名字

    # 新建默认的话 sheet0 sheet1 ...
    ws.title = "hello"

    获取sheet的名称

    sheet_name = wb.get_sheet_names()
    print sheet_name
    # or
    for sheet in wb:
        print sheet.title

    单元格操作

    # 获取一个单元格的value
    value = ws['B2']
    # or
    value = ws.cell('B2')
    # or 非常推荐 遍历都很方便
    value = ws.cell(row=1,column=2)
    
    #获取多个单元格
    cells = ws['A1':'E4']
    
    #为一个单元格赋值
     ws['B2'] = "alic"
    # or
    ws.cell('B2') = "hello"
    # or 非常推荐 遍历都很方便
    ws.cell(row=1,column=2) = "value"
    
    # 遍历多个单元格
    for row in ws.iter_rows('A1:D2'):
          for cell in row: 
                print cell

    获取当前工作表的已有数据的对象

    # 所有行
    ws.rows
    
    # 所有列
    ws.columns

    获取当前工作表的数据长度与宽度

    row_length = len(ws.rows)
    cloumn_length = len(ws.columns)
    # 推荐 centOS上面的会报错
    row-length = len(list(ws.rows))
    cloumn_length = len(list(ws.rows))

    保存文件

    # 注意要是加载进来的路径与保存的路径一致文件将会被覆盖
    wb.save(path)
    
    # 也可以将文件作为模板保存  as_template默认为False
    wb.save('document_template.xltx', as_template=True)

    简单的样式处理

    # 文本对齐方式
    align = Alignment(horizontal='center', vertical='center')
    ws.cell(row=deng_lu_taskRow, column=index + 3).alignment = align
    
    # 字体大小
    font = Font(size=10)
    ws.cell(row=taskRow, column=column).font = font
  • 相关阅读:
    CodeForces-786B Legacy (线段树优化建图,单源最短路)
    CodeForces-528C Data Center Drama
    CodeForces-723E One-Way Reform
    2-SAT入门
    POJ-3683 Priest John's Busiest Day (2-SAT 求任意可行方案)
    转载: 8天学通MongoDB——第一天 基础入门
    C# 非EF注册登录与EF注册登录
    Asp.Net入门(三)
    非EF分页
    sql语句错误大集合
  • 原文地址:https://www.cnblogs.com/yrxns/p/7691727.html
Copyright © 2011-2022 走看看