• python.openpyxl


    下载和导包

    pip install openpyxl
    
    import openpyxl
    
    导入将字母转换成数字,将数字转换成字母的包
    from openpyxl.utils import get_column_letter,column_index_from_string
    

    名词概念

    工作薄(workbook)
    表单(worksheet)
    行、列、单元格(row、column、cell)

    创建和打开EXCEL文件

    # 创建一个excel文件,创建和打开不同,创建最后需要保存
    wb = openpyxl.Workbook()
    wb.save("test.xlsx")
    
    # 打开一个excel文件
    wb = openpyxl.load_workbook(文件路径)
    

    EXCEL里表单的操作

    以下所有操作都是基于打开或者创建一个excel文件之后的操作:

    wb = openpyxl.load_workbook(文件路径)
    
    方法 应用场景 使用案例 运行结果
    .create_sheet() 创建表单 wb.create_sheet("leesin") or (index=5,title='leesin') 添加名为“leesin”新表单 or 创建为第五页表单
    .remove_sheet() 删除表单 wb.remove_sheet(wb.get_sheet_by_name('表单名')) 删除该表单
    .sheetnames 读取中所有表单名称 print(wb.sheetnames) 返回包含所有表单名称的list
    .get_sheet_by_name() 获取指定名称的表单 ws = wb.get_sheet_by_name("表单名称") 将指定名称的表单赋值给ws
    .active 获取当前表单 ws = wb.active 将当前工作表单赋值给ws
    .title 获取和更改当前活动表单的名称 print(ws.title) or ws.title=“test1” 返回当前表单的名称:test or 更改当前表单的名称为:test1
    .row 获取行数 print(sheet["B1"].row) 打印B1所在的行数:1
    .column 获取列数 print(sheet["B1"].column) 打印B1所在的列数:2
    .coordinate 获取坐标 print(sheet["B1"].coordinate) 打印B1的坐标:B1
    .value 获取值或者赋值 print(sheet["B1"].value) 打印B1的值:B1
    .cell 根据行、列定位坐标#.cell(row,column) print(sheet.cell(1,2).value) 返回地一行第二列的值:B1

    .rows 按行获取数值,将每行所有的值返回为元祖格式

    for row in sheet.rows:
    	print(row)
    
    (<Cell 'test'.A1>, <Cell 'test'.B1>, <Cell 'test'.C1>, <Cell 'test'.D1>, <Cell 'test'.E1>, <Cell 'test'.F1>)
    (<Cell 'test'.A2>, <Cell 'test'.B2>, <Cell 'test'.C2>, <Cell 'test'.D2>, <Cell 'test'.E2>, <Cell 'test'.F2>)
    (<Cell 'test'.A3>, <Cell 'test'.B3>, <Cell 'test'.C3>, <Cell 'test'.D3>, <Cell 'test'.E3>, <Cell 'test'.F3>)
    (<Cell 'test'.A4>, <Cell 'test'.B4>, <Cell 'test'.C4>, <Cell 'test'.D4>, <Cell 'test'.E4>, <Cell 'test'.F4>)
    (<Cell 'test'.A5>, <Cell 'test'.B5>, <Cell 'test'.C5>, <Cell 'test'.D5>, <Cell 'test'.E5>, <Cell 'test'.F5>)
    (<Cell 'test'.A6>, <Cell 'test'.B6>, <Cell 'test'.C6>, <Cell 'test'.D6>, <Cell 'test'.E6>, <Cell 'test'.F6>)
    (<Cell 'test'.A7>, <Cell 'test'.B7>, <Cell 'test'.C7>, <Cell 'test'.D7>, <Cell 'test'.E7>, <Cell 'test'.F7>)
    (<Cell 'test'.A8>, <Cell 'test'.B8>, <Cell 'test'.C8>, <Cell 'test'.D8>, <Cell 'test'.E8>, <Cell 'test'.F8>)
    (<Cell 'test'.A9>, <Cell 'test'.B9>, <Cell 'test'.C9>, <Cell 'test'.D9>, <Cell 'test'.E9>, <Cell 'test'.F9>)
    

    .columns 按列获取数值,将每列所有的值返回为元祖格式

    for col in sheet.columns:
    	print(col)
    
    返回数据
     
    A1
    A2
    A3
    A4
    A5
    A6
    A7
    A8
    A9
    B1
    B2
    B3
    B4
    B5
    B6
    B7
    B8
    B9
    C1
    C2
    C3
    C4
    C5
    C6
    C7
    C8
    C9
    D1
    D2
    D3
    D4
    D5
    D6
    D7
    D8
    D9
    E1
    E2
    E3
    E4
    E5
    E6
    E7
    E8
    E9
    F1
    F2
    F3
    F4
    F5
    F6
    F7
    F8
    F9
      

    设置单元格样式

    单元格样式主要包括字体、边框、颜色以及对齐方式等,这些均位于openpyxl.styles库中

    # 导入字体、边框、颜色以及对齐方式相关库from openpyxl.styles import Font, Border, Side, PatternFill, colors, Alignment
    

    字体通过sheet单元格font属性设置字体风格

    通过sheet单元格font属性设置字体风格

    # 设置字体风格为Times New Roman,大小为16,粗体、斜体,颜色蓝色
    sheet['A1'].font = Font(name='Times New Roman', size=16, bold=True, italic=True, color=colors.BLUE)
    

    对齐方式

    通过sheet单元格alignment属性设置文本对齐风格

    # 通过参数horizontal和vertical来设置文字在单元格里的对齐方式,此外设置值还可为left和right
    sheet['B1'].alignment = Alignment(horizontal='center',vertical='center')
    

    边框

    通过sheet单元格border属性设置字体风格

    # 首先设置边框四个方向的线条种类
    left, right, top, bottom = [Side(style='thin', color='000000')] * 4
    # 再将各方向线条作为参数传入Border方法
    sheet['C1'].border = Border(left=left, right=right, top=top, bottom=bottom)
    

    设置行高和列宽

    行和列的长度大小可以通过row_dimensions[序号].height和column_dimensions[标号].width来设置

    # 设置行高
    sheet.row_dimensions[1].height = 25
    
    # 设置列宽
    sheet.column_dimensions['D'].width = 15.5
    

    合并和拆分单元格

    对单元格的合并与拆分,主要是通过sheet的merge_cells(args1:args2)和unmerge_cells(args1:args2)两个方法来实现的

    # 合并单元格
    sheet.merge_cells('A1:B2')
    
    # 拆分单元格
    sheet.unmerge_cells('A1:B2')
    
  • 相关阅读:
    4412开发板Android教程——Android平台简介
    CF621E Wet Shark and Blocks(矩阵加速DP)
    CF963B Destruction of a Tree(高级DFS)
    CF474E Pillars(离散化+线段树+保存DP路径)
    CF1214E Petya and Construction Set(树上构造)
    CF360B Levko and Array(DP+二分答案)
    CF1060E Sergey and Subway(公式推导+树上信息统计)
    CF641E Little Artem and Time Machine(时间离散化+平衡树套树状数组)
    CF264C Choosing Balls(保留最大值、次大值+DP)
    CF571B. Minimization(DP)
  • 原文地址:https://www.cnblogs.com/youngleesin/p/11435611.html
Copyright © 2020-2023  润新知