• 使用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中的默认边框
    # 对合并的单元格加边框时需要注意,不像赋值一样,而是需要将其中的所有的单元格(合并前)都加边框
  • 相关阅读:
    Python——极限编程
    RPC是什么?科普一下
    缓存在高并发场景下的常见问题
    如何提高缓存命中率
    数据库性能优化的误区
    缓存在大型网站架构中的应用
    APP多版本共存,服务端如何兼容?
    水平分库分表的关键问题及解决思路
    分库分表的几种常见玩法及如何解决跨库查询等问题
    分布式系统事务一致性解决方案
  • 原文地址:https://www.cnblogs.com/jiaqi-666/p/9618375.html
Copyright © 2020-2023  润新知