之前通过php生成exls数据很大的时候很慢,现在通过python修改下,快了很多
import json
import os.path
from openpyxl import Workbook
ex = []
if os.path.exists('ex.json'):
with open('ex.json', 'r', encoding='UTF8', errors='ignore') as f:
ex = json.loads(f.read())
# print(f'The jsbn list:{str(ex)}')
if len(ex) > 0:
wb = Workbook()
ws = wb.active
ws.title = 'ISBN'
rowTitle = {'A': {'name': '序号', 'width': 10}, 'B': {'name': '服务费管理单号', 'width': 20},
'C': {'name': '服务费订单类型', 'width': 20},
'D': {'name': '同步状态', 'width': 10}, 'E': {'name': '角色类型', 'width': 10},
'F': {'name': '推荐人', 'width': 10}, 'G': {'name': '推荐人上级角色', 'width': 15},
'H': {'name': '发货单号', 'width': 15}, 'I': {'name': '订单号', 'width': 15},
'J': {'name': '商品名称', 'width': 25}, 'K': {'name': '商品编号', 'width': 15}}
rowTitleList = []
for rowK, rowV in rowTitle.items():
ws.column_dimensions[rowK].width = rowV['width']
rowTitleList.append(rowV['name'])
ws.append(rowTitleList)
count = 1
for isbn in ex:
ws.append([count, isbn['fee_id'], isbn['fee_type'], isbn['is_sycn'], isbn['role_type'],
isbn['phone'], isbn['lv_name'], isbn['delivery_id'], isbn['order_id'], isbn['goods_name'],
isbn['goods_bn']])
count += 1
wb.save('isbn.xlsx')
else:
print("The json file wasn't found!")
我尝试了w条数据,基本在几秒导出,这里没有操作数据库,直接使用json的,即使是操作mysql,在查询数据上最多消耗10秒内可以正常导出的,还是很不错的,可以尝试尝试