python3 生成excel(csv/xls/xlsx)

文章目录


一、项目背景

1、项目需求

为方便客户查看,需要将现有数据转存excel格式

2、实施时间

2020-12-15

二、 技术背景

1、阅读文章所需知识背景

1)具有少量python相关经验,了解数组、字典 、for循环语句以及range函数用法

2、开发环境

1)Win10-64
2)Python 3.6.6
3)python类库xlwt 1.3.0

3、开发工具

1)Pycharm 2020.2.2

三、具体代码

import xlwt

# 1.创建 Workbook
wb = xlwt.Workbook()

# 2.创建 worksheet
ws = wb.add_sheet('sheet1')

# 3.写入第一行内容  ws.write(a, b, c)  a:行,b:列,c:内容
titleList = ['详情url', '标题', '楼盘名字', '面积大小']
for i in range(0, len(titleList)):
    ws.write(0, i, titleList[i])

# 4.写入对应内容
contentList = [{'title': '新村路地铁口 非顶楼边套全明 精装修 满五唯一', 'loupan': '2室1厅 | 55.82平米 | 南 | 精装 | 高楼层(共6层) | 1993年建 | 板楼',
                'houseType': '55.82平米', 'area': '南', 'toward': '精装', 'renovation': '高楼层(共6层)',
                'positionInfo': '双山小区-甘泉宜川', 'totalPrice': '285万', 'unitPrice': '单价51057元/平米',
                'detailUrl': 'https://sh.lianjia.com/ershoufang/107103371545.html'},
               {'title': '精装修南北两方 视野宽阔  近地铁 看房方便', 'loupan': '2室1厅 | 53.71平米 | 南 北 | 精装 | 高楼层(共6层) | 1988年建 | 板楼',
                'houseType': '53.71平米', 'area': '南 北', 'toward': '精装', 'renovation': '高楼层(共6层)',
                'positionInfo': '管弄一二街坊-光新', 'totalPrice': '295万', 'unitPrice': '单价54925元/平米',
                'detailUrl': 'https://sh.lianjia.com/ershoufang/107103058018.html'}
               ]

# 5.所需获取数据对应key
jsonKeyLIst = ['detailUrl', 'title', 'positionInfo', 'houseType']

for i in range(0, len(contentList)):
    for j in range(0, len(jsonKeyLIst)):
        # 文件中已写入一行title,所以这里写入内容时行号为i+1而非i
        # 列号为j
        ws.write(i + 1, j, contentList[i][jsonKeyLIst[j]])

# 保存文件
wb.save('./myExcel.csv')
wb.save('./myExcel.xls')
wb.save('./myExcel.xlsx')

四、代码下载

完整代码github地址如下:
https://github.com/zf-wang-52xhw/GenerateExcel
python3 生成excel(csv/xls/xlsx)

五、编码过程中的思考

1、xls和xlsx对程序带来的影响

xls格式单页最大行数为65535,写入数据行数大于65535时需增加新的sheet(wb.add_sheet(‘sheet1’)),否则可能会导致文件出错。若无特殊需要请尽量选用xlsx格式。若有可能,数据还是尽量存入数据库(postgres等),方便管理以及后续的使用。

总结

整个代码并不复杂,希望可以帮助到有需要的人。阅读本文的过程中如有任何问题欢迎随时与我联系。

上一篇:报表读写 - POI概述


下一篇:文件与IO --读写字节数据中的一些问题