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()

你可能感兴趣的:(Python写入Excel)