Python 导出数据到 Excel

使用 xlwt

import xlwt

def set_style(name,height,bold=False):
    style = xlwt.XFStyle()
    font = xlwt.Font()
    font.name = name
    font.bold = bold
    font.color_index = 4
    font.height = height
    style.font = font
    return style

def export_excel(datas):
    file = xlwt.Workbook(encoding="utf-8")
    table = file.add_sheet("table_name", cell_overwrite_ok=True)
    headers = ["公司", "行业信息", "经营内容", "地址"]

    # 写数据时索引从0开始
    for i in range(len(headers)):
            table.write(0, i, headers[i], set_style('宋体', 220, True))

    for i in range(len(datas):
        for j, k in enumerate(datas[i].keys()):
            table.write(i+1, j, datas[i][k])
    file.save("filename.xls")

if __name__ == "__main__":
    datas = [
        {"公司": "A", "行业信息": "B", "经营内容": "C", "地址": "D"},
    ]
    export_excel(datas)

要注意的是,xlrd 和 xlwt 处理的是 xls 文件,单个 sheet 最大行数是 65535,如果有更大需要的,建议使用 openpyxl 函数,最大行数达到1048576。

使用 openpyxl

若报错 AttributeError: 'int' object has no attribute 'upper',升级版本即可:pip install -U openpyxl

import openpyxl

def export_excel(datas):
    file = openpyxl.Workbook()
    table = file.create_sheet(index=0)
    headers = ["公司", "行业信息", "经营内容", "地址"]

    # 写数据时索引从1开始
    for i in range(len(headers)):
        table.cell(1, i+1).value = headers[i]

    for i in range(len(datas)):
            for j, k in enumerate(datas[i].keys()):
                table.cell(i+2, j+1).value = datas[i][k]
    file.save("filename.xlsx")

if __name__ == "__main__":
    datas = [
        {"公司": "A", "行业信息": "B", "经营内容": "C", "地址": "D"},
    ]
    export_excel(datas)

留下评论