Python写入Excel

  • xlsxwriter
    xlrd:用于读取 Excel 文件;xlwt:用于写入 Excel 文件;xlutils:用于操作 Excel 文件的实用工具,比如复制、分割、筛选等;
    https://xlsxwriter.readthedocs.io/
    写入大.xlsx文件时使用内存优化模式。

  • pandas
    http://pandas.pydata.org/
    pandas支持.xls,.xlsx文件的读写。

  • openpyxl
    openpyxl是一个用于读取和编写Excel 2010之后的 xlsx/xlsm/xltx/xltm文件的库。
    https://openpyxl.readthedocs.io/en/stable/
    1、加载大.xlsx文件可以使用read_only模式。
    2、写入大.xlsx文件可以使用write_only模式。

类型 xlrd&xlwt&xlutils pandas OpenPyXL
读取 支持 支持 支持
写入 支持 支持 支持
修改 支持 支持 支持
xls 支持 支持 不支持
xlsx 高版本支持 支持 支持
大文件 不支持 支持 支持
效率 快 快 快
功能 较弱 强大 一般
速度 最快 慢 较快
import xlsxwriter as xw
import pandas as pd
import openpyxl as op

def get_data():
    orderIds = [1, 2, 3]
    items = ['A', 'B', 'C']
    myData = ["风犬少年的天空", "重启", "半泽直树"]
    testData = [orderIds, items, myData]
    return testData
    # filename2 = '测试2.xlsx'
    # filename3 = '测试3.xlsx'


# xlsxwriter 一行一行写
def xw_toexcel(data, file_name):
    """ 通过 xlsxwriter 方式 """
    # 创建工作簿
    workbook = xw.Workbook(file_name)
    # 创建子表
    worksheet = workbook.add_worksheet("sheet")
    # 激活表
    worksheet.activate()
    # 设置表头
    title = ['序号', '等级', '名称']
    # 从A1单元格开始写入表头
    worksheet.write_row('A1', title)
    # 从第二行开始写入数据
    i = 2
    for j in range(len(data)):
        insertData = [data[0][j], data[1][j], data[2][j]]
        row = 'A' + str(i)
        worksheet.write_row(row, insertData)
        i += 1
    # 关闭表
    workbook.close()


def pd_toexcel(data, file_name):
    """ pandas方式 """
    # 用字典设置DataFrame所需数据
    dfData = {
        '序号': data[0],
        '等级': data[1],
        '名称': data[2]
    }
    # 创建DataFrame
    df = pd.DataFrame(dfData)
    # 存表,去除原始索引列(0,1,2...)
    df.to_excel(file_name, index=False)


def op_toexcel(data, file_name):
    """ openpyxl方式 """
    # 创建工作簿对象
    wb = op.Workbook()
    # 创建子表
    ws = wb['Sheet']
    # 添加表头
    ws.append(['序号', '等级', '名称'])
    for i in range(len(data[0])):
        d = data[0][i], data[1][i], data[2][i]
        # 每次写入一行
        ws.append(d)
    wb.save(file_name)


def main():
    # xw_toexcel(get_data(), '测试1.xlsx')

    # pd_toexcel(get_data(), '测试2.xlsx')

    op_toexcel(get_data(), '测试3.xlsx')


if __name__ == '__main__':
    main()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容