zoukankan      html  css  js  c++  java
  • 使用python的openpyxl模块操作excel

    openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易

    openpyxl的安装

    模块的引入

    from openpyxl import Workbook
    from openpyxl.styles import Color, Font, Alignment
    from openpyxl.styles import Border, Side, Font
    from openpyxl import load_workbook

    模块的基本用法

     创建与保存

    wb = Workbook()  # 创建一个新的excel
    ws = wb.active  # 获得这个excel的第一个sheet表名
    wb.save('xx.xlsx') # 保存excel,若是保存路径有同名文件则会覆盖只有保存后里面修改的内容才可以找到
    
    

     打开存在的excel

    file_home = r"E:demo.xlsx" # 文件的绝对路径
    wb = load_workbook(file_home)
    根据Sheet1这个sheet名字来获取该sheet
    ws = wb['Sheet1']

    对工作表的操作

    print(wb.worksheets)  # 打印这个book里面的所有工作表
    print(wb.worksheets[1])  # 打印这个book里面的第二个工作表
    print(wb.sheetnames)  # 查看所有的sheet表,结果是列表形式,也可以用遍历:
    ws = wb.active  # 获得这个book的第一个sheet表名
    wb.remove(wb.worksheets[0])  # 删除索引为0的sheet表
    wb.remove(wb['xxx'])  # 删除名为‘xxx’的表ws.title = '修改第一个表名'  # 因为 ws = wb.active获取的是第一个表名,所以修改的就是第一个
    wb.worksheets[1].title = '修改索引为1的表名'
    wb['xxx'].title = '修改名为最后一个工作表的表名' # 修改名为‘xxx’的表名字
    ws1 = wb.create_sheet('新的sheet表', index=0) # 插入新的工作表,放在0位置
    ws2 = wb.create_sheet('最后一个工作表') # 默认插在最后

    对单元格的操作

    file_home = r"E:python-filemy_pythondemo.xlsx"
    wb = load_workbook(file_home)
    ws = wb.active  # 获取第一个工作表
    ws_rows_len = ws.max_row  # 最大行数
    ws_columns_len = ws.max_column  # 最大列数
    ws_rows = ws.rows  # 获取所有的行,得到的是可迭代的
    ws_columns = ws.columns  # 获取所有的列,得到的是可迭代的
    b4_1 = ws.cell(row=1, column=1)
    b4_2 = ws['B4']
    print(b4_1.value, b4_2.value)  # 获取单元格内容,用过value得到其值

    修改单元格

    file_home = r"E:python-filemy_pythondemo.xlsx"
    wb = load_workbook(file_home)
    ws = wb.active  # 获取第一个工作表
    ws.merge_cells(range_string='A1:B3')  # 合并单元格A1:B3
    ws["A1"] = "=SUM(B1:C1)"  # 通过公式计算产生写入的值
    ws["A1"] = 'A1内容'  # 对A1单元格内容修改,若是对合并的单元格的值进行修改,只需修改合并的单元格中左上角的单元格的内容
    ws.cell(row=4, column=2, value=10)  # 通过坐标,修改4行2列(也就是B4)的值为10
    ws.row_dimensions[1].height = 34  # 设置行高
    ws.column_dimensions['B'].width = 22  # 设置列宽
    ws["A1"] = "=SUM(B1:C1)"  # 通过公式计算产生写入的值
    ws['A35'].font = Font(name='微软雅黑', size=14, bold=True)  # 设置单元格字体,bold=True加粗
    ws["A1"].alignment = Alignment(horizontal='center', vertical='center')  # 第一行第一列单元格内容水平居中和垂直居中,也可以选择左对齐或右对齐
    ws['A35'].border = Border(left=Side(border_style=None,  color='FF000000'),
                              right=Side(border_style=None,  color='FF000000'),
                              top=Side(border_style=None,  color='FF000000'),
                              bottom=Side(border_style=1,  color='FF000000'),)
    # 设置单元格上下左右边框, style属性:'dashDot','dashDotDot', 'dashed','dotted',
    #                             'double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot',
    #                             'mediumDashed', 'slantDashDot', 'thin', 'thick'为excel中的默认边框
    # 对合并的单元格加边框时需要注意,不像赋值一样,而是需要将其中的所有的单元格(合并前)都加边框
  • 相关阅读:
    (zhuan) Paper Collection of Multi-Agent Reinforcement Learning (MARL)
    SalGAN: Visual saliency prediction with generative adversarial networks
    百善孝为先
    现代人为这个世界留下了什么?
    如人饮水,冷暖自知。
    移动端tap与click的区别 && 点透事件
    渐进增强与优雅降级 && css3中普通属性和前缀属性的书写顺序
    JavaScript中的垃圾回收机制与内存泄露
    http2.0之头部压缩
    状态码301和302的区别
  • 原文地址:https://www.cnblogs.com/jiaqi-666/p/9618375.html
Copyright © 2011-2022 走看看