• 您当前位置:网站首页 >> Python学习 >> Python 使用openpyxl模块编辑 Excel 表格
  • Python 使用openpyxl模块编辑 Excel 表格

    iCoA首席特工 逍遥峡谷 发布:2019-12-25 更新:2020-01-07 浏览0条评论
    内容简介

    相关关键词:Python   openpyxl   Excel   表格  

    本文链接:https://www.icoa.cn/a/885.html

    本站文章如非注明皆为原创,未经允许禁止转载。如有问题可以给我留言或发邮件。

    上篇日志学习了Python 使用openpyxl模块读取 Excel 表格,接下来就学习如何编辑 Excel 表格,向其中写入内容。

    如果向某个单元格写入数据,直接给某个单元格赋值就行。

    from openpyxl import load_workbook
    wb = load_workbook('demo.xlsx')
    ws = wb.active
    # 把想要写入的内容赋值给相应单元格
    ws['A1'] = '世界你好!'
    # 保存demo.xlsx表格
    wb.save('demo.xlsx')


    也可以把单元格赋值给变量wc,然后再给wc.value赋值

    wb = load_workbook('demo.xlsx')
    ws = wb.active
    wc = ws['A1']
    wc.value = 'Hello world.'
    # 保存demo.xlsx表格
    wb.save('demo.xlsx')


    Workbook 新建 Excel 文档

    通过查看openpyxl官方文档,官方给了一个案例,我翻译了一下注释:

    这个案例引入的是 Workbook 方法新建文档,注意大小写。新建 Excel 文档的时候,如果存在同名文档会被覆盖。

    from openpyxl import Workbook
    wb = Workbook()
    # 选中活动表格
    ws = wb.active
    # 数据直接存到单元格A1
    ws['A1'] = 42
    # 可以用列表添加一行
    ws.append([1, 2, 3])
    # Python 类型自动转换
    import datetime
    # 把当前时间存到 A2
    ws['A2'] = datetime.datetime.now()
    # 保存文件
    wb.save("sample.xlsx")

    执行效果是这样的,会新建一个sample.xlsx:

    新建.png

    从官方的案例中可以看到,可以用 sheet.append() 给表格添加一行.


    我们给刚才新建的这个sample.xlsx再添加一行数据

    # 这里我们同时导入load_workbook 和 Workbook
    from openpyxl import Workbook,load_workbook
    wb = load_workbook("sample.xlsx")
    # 选中活动表格
    ws = wb.active
    # 用列表增加一行数据
    ws.append([1, 2, 3])
    # 保存文件
    wb.save("sample.xlsx")

    执行效果:

    添加数据.png

    再举个例子,用循环写入数据:

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    data = [
        ['a',1],
        ['b',2],
        ['c',3],
        ['d',4],
    ]
    for row in data:
        ws.append(row)
    wb.save("sample.xlsx")

    执行效果:

    写入数据.png

    向表格中插入公式

    直接给单元格赋值公式即可:

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    ws['B8'] = '=SUM(B4:B7)'
    wb.save("sample.xlsx")

    执行效果:

    插入公式.png

    查看 openpyxl 支持哪些 Excel 公式

    from openpyxl.utils import FORMULAE
    print(FORMULAE)
    # 运行结果里出现的公式都可以用

    插入一列

    .insert_cols(idx=数字编码) 在idx列前面(左边)插入一列

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    # 在第二列前面插入1列
    ws.insert_cols(2)
    wb.save("sample.xlsx")

    1.png

    插入多列

    .insert_cols(idx=数字编码,amount=几列) 在idx列前面插入amount列

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    # 在第二列前面插入3列
    ws.insert_cols(2,3)
    wb.save("sample.xlsx")

    插入多列.png

    插入一行

    .insert_rows(idx=数字) 在idx行上面插入一行

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    ws.insert_rows(2)
    wb.save("sample.xlsx")

    0.png

    插入多行

    .insert_rows(idx=数字,amount=几行) 在idx行上面插入amount行

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    ws.insert_rows(4,2)
    wb.save("sample.xlsx")

    插入多行.png

    删除列

    .delete_cols(idx=数字,amount=几列) 从idx列开始向后删除amount列,包括idx列

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    # 从第二列开始,删除2列
    ws.delete_cols(2,2)
    wb.save("sample.xlsx")

    删除列

    删除行

    .delete_rows(idx=数字,amount=几行) 从idx行开始向下删除amount行,包括idx行

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    # 从第二行开始,删除4行
    ws.delete_rows(2,4)
    wb.save("sample.xlsx")

    删除行

    移动单元格

    .move_range('A2:C3',rows=2,cols=3) 单元格向右或者向下移动几行或几列,如果是负数则向左或向上

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    # A2:C3 向下移动2行,向右移动3列
    ws.move_range('A2:C3',2,3)
    wb.save("sample.xlsx")

    移动单元格

    创建新的工作表

    .create_sheet() 创建新的工作表,新工作表的名称不允许跟之前的名称重复

    wb = load_workbook("sample.xlsx")
    print(wb.sheetnames)
    wb.create_sheet('新工作表')
    print(wb.sheetnames)
    wb.save('sample.xlsx')
    ''' 执行结果:
    ['Sheet']
    ['Sheet', '新工作表']
    '''


    删除工作表

    .remove() 删除已存在的工作表

    wb = load_workbook('sample.xlsx')
    print(wb.sheetnames)
    wb.remove(wb['新工作表'])
    print(wb.sheetnames)
    wb.save('sample.xlsx')
    ''' 执行结果:
    ['Sheet', '新工作表']
    ['Sheet']
    '''


    复制一个工作表

    .copy_worksheet() 复制指定的工作表

    wb = load_workbook("sample.xlsx")
    print(wb.sheetnames)
    wb.copy_worksheet(wb['Sheet'])
    print(wb.sheetnames)
    wb.save('sample.xlsx')
    ''' 执行结果:
    ['Sheet']
    ['Sheet', 'Sheet Copy']
    '''


    修改工作表名

    .title 给其赋值即可

    wb = load_workbook('sample.xlsx')
    print(wb.sheetnames)
    ws = wb['Sheet']
    ws.title = '工作表1'
    print(wb.sheetnames)
    wb.save('sample.xlsx')
    ''' 执行结果:
    ['Sheet', 'Sheet Copy']
    ['工作表1', 'Sheet Copy']
    '''


    上面介绍了官方案例用Workbook新建Excel文档,我们同样可以在新建文档的时候,指定工作表名。

    wb = Workbook()
    # 选中活动表格
    ws = wb.active
    ws['A1'] = 42
    ws.title = 工作表1'
    wb.save("sample.xlsx")


    冻结窗格

    .freeze_panes 可以指定一个单元格,然后冻结

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    ws.freeze_panes = 'B2'
    wb.save("sample.xlsx")

    如果想冻结首行的话可以冻结A2就可以了,同理,如果只想冻结首列可以冻结B1单元格。


    自动筛选

    .auto_filter..ref 指定范围内容自动筛选,可以用.dimensions筛选整个工作表

    wb = load_workbook("sample.xlsx")
    ws = wb.active
    ws..auto_filter..ref = wb.dimensions
    wb.save("sample.xlsx")

    更多Python相关文章点击:Python学习日志目录


    本文链接:https://www.icoa.cn/a/885.html
    关键词: Python   openpyxl   Excel   表格  


    如果您愿意支持本站,欢迎点击打赏哦~



    下一篇:Python 第三方库、模块安装和卸载方法以及国内镜像

    上一篇:Python 使用openpyxl模块打开和读取 Excel 表格内容


    - 相关文章 -


    Python 数字与数字型运算 - 2020-09-08

    Python 基础知识之数据类型 - 2020-09-07

    Python 学习中非常好用的编辑器 Sublime Text 3 - 2020-09-07

    Python 基础知识之变量 - 2020-09-03

    Python 详细安装步骤图解 - 2020-09-01

    Python 数据分析模块 Pandas 之 DataFrame 数据 - 2020-02-09

    Python 数据分析模块 Pandas 之 Series 数据 - 2020-02-05

    Python 数据分析第三方库 Numpy 的安装和使用 - 2020-02-03


    - 文章评论 -




    2065

    [由于政策原因,您的留言如果提交成功后,需要审核才能展示,请改天再来查看,请不要重复提交,谢谢支持!]

    - 最新评论[0条评论] -


    [>>>点击查看更多评论]

    版权所有©逍遥峡谷 - 星际中心超自然局 · 地球总部 | 逍遥峡谷 · 酷品优选
    Copyright©Interstellar Central Occult Agency (I.C.O.A)
    本局纯属虚构,如有雷同,纯属巧合

    冀公网安备13011102001055号 · 冀ICP备06033848号