美文网首页pythonWE
python利用openpyxl读写Excel

python利用openpyxl读写Excel

作者: yiming1012 | 来源:发表于2019-08-16 16:21 被阅读41次

    文章作者:易明
    个人博客:https://yiming1012.github.io
    简书主页:https://www.jianshu.com/u/6ebea55f5cec
    邮箱地址:1129079384@qq.com

    简介

        最近的数据分析工作需要将数据插入到给定格式的Excel文件(.xlsx)中。通过调研发现:

    1. xlrd/xlwt对文件的读写速度较快,对于微软的office,只能保存为xls文件,不能为xlsx文件,而金山的WPS Office既可保存为xls,也可保存为xlsx。由于我用的是WPS,不存在不能对xlsx文件操作的问题。
    # -*- coding: utf-8 -*-
    import xlrd
    from xlutils.copy import copy
    #filename
    filename = 'a.xlsx'# 文件名
    rb = xlrd.open_workbook(filename, formatting_info=True)
    # formatting_info=True: 保留原数据格式
    wb = copy(rb)           # 复制页面
    ws = wb.get_sheet(0)    # 取第一个sheet
    # ----- 按(row, col, str)写入需要写的内容 -------
    for i in range(10):
        ws.write(3, i, i)
    # ----- 按(row, col, str)写入需要写的内容 -------
    wb.save(filename)
    
    1. pandas中的ExcelWriter可以将整个dataframe写入到Excel,但是Excel文件格式会发生变化。
    # -*- coding: utf-8 -*-
    import pandas as pd
    #DataFrame
    df1 = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}, columns=['a', 'b'])
    df2 = pd.DataFrame({'a': [7, 8, 9], 'b': [6, 5, 4]}, columns=['a', 'b'])
    #指定Excel
    writer = pd.ExcelWriter('aaa.xlsx')
    df1.to_excel(writer, sheet_name='sheet1', index=False)
    df2.to_excel(writer, sheet_name='sheet2', index=False)
    #保存
    writer.save()
    
    1. openpyxl模块可以对原始文件进行操作,只是读写速度偏慢。本次工作中采用openpyxl模块实现功能。
    from openpyxl import load_workbook
    #导入Excel文件
    wb = load_workbook('a.xlsx')
    #激活工作表
    #ws = wb.active #这个可以注释掉
    #获取sheet
    ws =wb['Sheet1']
    #插入数据
    ws['A1'] = 234
    ws.cell(row=1, column=3).value = 123
    
    #遍历数据
    for row in ws.values:
        for cell in row:
            print(cell)
    
    for row in ws.iter_rows(min_row=2, max_col=2, max_row=3):
        for cell in row:
            print(cell.value)
    
    #保存到文件
    wb.save("a.xlsx")
    

    openpyxl模块

    参照官网文档:https://openpyxl.readthedocs.io/en/stable/tutorial.html

    1. 如果没有安装openpyxl模块,可以通过pip安装
    pip install openpyxl
    
    1. 导入Workbook
    from openpyxl import Workbook,load_workbook
    
    1. 如果表不存在,则创建Workbook;存在则导入:
    wb = Workbook() #表不存在,创建
    wb = load_workbook('test.xlsx')#表存在,导入
    
    1. 创建和使用sheet
    ws1 = wb.create_sheet("Mysheet") # 默认在最后新建sheet
    ws2 = wb.create_sheet("Mysheet", 0) # 在第一个新建sheet
    ws3 = wb['Sheet1']# 如果表里面存在sheet,则可使用该sheet
    
    1. 向单元格插入数据
    ws['A1'] = 234 #通过worksheet的key
    ws.cell(row=1, column=3).value = 123 #通过行列确定一个cell
    
    1. 遍历表文件
    #遍历所有数据
    for row in ws.values:
        for cell in row:
            print(cell)
    #遍历指定范围数据
    for row in ws.iter_rows(min_row=2, max_col=2, max_row=3):
        for cell in row:
            print(cell.value)
    
    1. 保存文件
    wb.save('name.xlsx') #可取不同文件名
    

    总结

        以上为简单的学习总结,希望能帮助到有需要的朋友,通过总结自己也获得了成长。代码Demo请参考https://github.com/yiming1012/coding

    相关文章

      网友评论

        本文标题:python利用openpyxl读写Excel

        本文链接:https://www.haomeiwen.com/subject/bixpjctx.html