需求:接口接口示例(这里是python代码):

主要从 import xlwt 往下是拼接 excel 表格数据代码,前面都是处理数据,不用了解。

@login_required
@ajax_json_validate(ajax_export_order_statistic_schema)
@analyze
def ajax_export_order_statistic(request):"""导出订单报表"""global OrderStatisticDailyServiceif not ActivityGuideService: from user_center.services.order_statistic_daily_service import \OrderStatisticDailyServiceret_dict = {'success': True, 'data': {}}start_date = request.json.get('start_date')  #end_date = request.json.get('end_date')platform = request.json.get('platform')article_id = request.json.get('article_id')# 版本、产品线、版本等 数字对应number_enum = OrderStatisticDailyService.order_statistic_number_enum()if platform and article_id:header_first = u'版本'versions_data, date_versions_data = OrderStatisticDailyService.get_order_versions_aggregate_data_level3(start_date, end_date, platform, article_id)# 数据处理index = 0for versions in versions_data:index += 1versions['index'] = indexversions['header_first_value'] = number_enum['item_id'][versions['item_id']]for item in versions['cycle_data']:index += 1item['header_first_value'] = number_enum['item_id'][versions['item_id']] + "_" + number_enum['order_cycle'][item['order_cycle']]item['index'] = index# 内层的数据移动到外层pop_data = []  # 内层数据for versions in versions_data:pop_data.extend(versions.pop('cycle_data'))# 取出的内层数据添加到外层versions_data.extend(pop_data)# 排序need_export_data = sorted(versions_data, key=lambda x: x['index'], reverse=False)# need_export_data = versions_data# print '=========================版本:', need_export_dataelif platform and not article_id:header_first = u'产品线'products_data, date_products_data = OrderStatisticDailyService.get_order_products_aggregate_data_level2(start_date, end_date, platform)# 数据处理(把产品线id和托管、软件的id对应成值)index = 0  # 加这个是为了后面排序for products in products_data:index += 1products['header_first_value'] = number_enum['article_id'][products['article_id']]products['index'] = indexfor item in products[products['article_id']]:index += 1item['header_first_value'] = number_enum['article_id'][products['article_id']] + "_" + number_enum['is_auto'][item['is_auto']]item['index'] = index# 再把内层的托管和软件数据移到外层, 并注意排序(排序规则是软件、托管数据紧跟着对应的产品线数据)pop_data = []  # 内层数据for products in products_data:pop_data.extend(products.pop(products['article_id']))# 取出的内层数据添加到外层products_data.extend(pop_data)# 排序need_export_data = sorted(products_data, key=lambda x: x['index'], reverse=False)else:header_first = u'平台'platform_data, date_platform_data = OrderStatisticDailyService.get_order_platform_aggregate_data_level1(start_date, end_date)for platform in platform_data:platform['header_first_value'] = number_enum['platform'][platform['platform']]need_export_data = platform_dataimport xlwtresponse = HttpResponse(mimetype="application/ms-excel")filename = '订单统计报表'response['Content-Disposition'] = 'attachment; filename=%s.xls' % filenamewb = xlwt.Workbook()ws = wb.add_sheet(header_first)  # 看是平台统计还是  平台订单统计、产品线订单统计、软件订单统计header_list = [header_first, u'总用户数', u'订单总数量', u'订单总金额', u'退款订单总数', u'退款总金额', u'客单价', u'新签订单数量', u'新签订单金额', u'续签订单数量', u'续签订单金额', u'升级订单数量', u'升级订单金额']# 标题row = 0column = 0for header in header_list:ws.write(row, column, header)column += 1# 值for item in need_export_data:row += 1header_first_value = item.get("header_first_value", "--")u_header_first_value = header_first_value.decode('utf-8')  # str转为unicodews.write(row, 0, u_header_first_value)ws.write(row, 1, item.get("user_count", "--"))ws.write(row, 2, item.get("total_count", "--"))ws.write(row, 3, item.get("total_fee", "--"))ws.write(row, 4, item.get("refund_count", "--"))ws.write(row, 5, item.get("refund_fee", "--"))ws.write(row, 6, item.get("customer_price", '--'))ws.write(row, 7, item.get("new_count", "--"))ws.write(row, 8, item.get("new_fee", "--"))ws.write(row, 9, item.get("renew_count", "--"))ws.write(row, 10, item.get("renew_fee", "--"))ws.write(row, 11, item.get("upgrade_count", "--"))ws.write(row, 12, item.get("upgrade_fee", "--"))wb.save(response)return response

自己接口测试(下面代码是python3):

如果请求成功,当年目录会出现新文件 new_file8.xls。

# 请求测试
import requests
import jsonserver_url = 'http://yangbiao.maimiaotech.com:30001/yuny/ajax_export_order_statistic'
headers = {'Cookie': 'Hm_lvt_e5fd348cc8216f0df36c6abd4d7debae=1583391599; Hm_lvt_b54ba19a891548f54feecc7b9a610313=1583822879; _pk_id.7.bca3=aea5300581fee4c9.1573538150.8.1583913213.1583912235.; 3AB9D23F7A4B3C9B=SDMAWKN2OS55KCBGCPLI5S73I567F52K27S3JDR64RZJTDK5J7X7KXPYKKRJY6NKRBDYGAIQQCA2ZXEQLHLL2HTORM; Hm_lvt_4321337c63d397193c6ea0d29b1d8de9=1583989556,1584321700,1586256304; _pk_id.5.bca3=53b22768c6245622.1577333716.24.1586511111.1586503556.; Hm_lvt_3d82afab0e696e1b524200f25aa5ba96=1588737552; _pk_id.1.bca3=cc25ee123bc21d09.1583802642.8.1588752366.1588752344.; Hm_lvt_3860de2a996cb3fcc6d7c2ef11411ada=1587085948,1588829892; csrftoken=eMN8R69WwijSqnek9Bh6Zbu0EEASGwYV; Hm_lvt_cdf011a9ef990ca0279ffdab9ccb5605=1588737550; _pk_ses.3.bca3=*; Hm_lvt_5b5a0e94badb59a504ba0eecbac5ab=1588899310,1589504992; sessionid=wr53dumuk40v7v2ai2fm5uqn4knic5vz; login_group_id=26; Hm_lpvt_5b5a0e94badb59a504ba0eecb28ac5ab=1589504999; _pk_id.3.bca3=24123195f5637e4b.1577174875.13.1589505007.1589504992.','Content-Type': 'application/json','X-CSRFToken': 'eMN8R69WwijSqnek9Bh6Zu0EEASGwYV'
}
req_dict = {"start_date": "2020-05-06",# "start_date": "2019-05-06","end_date": "2020-05-07",# "platform": 1,# "article_id": 1
}
respose = requests.post(server_url, data=json.dumps(req_dict), timeout=30, verify=False, headers=headers)resp = respose.contentwith open('new_file8.xls', 'wb') as f:  # 第一个参数是保存文件路径,不加路径就是当前路径f.write(resp)

python2 + django 导出 excel 功能 接口示例代码(做记录)相关推荐

  1. vue项目导出EXCEL功能

    因为一些原因导出EXCEL功能必须前端来做,所以就研究了一下,在网上也找了一些文章来看,有一些不完整,我做完了就记录下来,供大家参考: 1.首先先安装依赖: npm install file-save ...

  2. django excel 导出页面_Django Admin中增加导出Excel功能过程解析

    在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 增加导出Excel功能 在Django Admin中每个模型的Admin类(继承至admin.ModelAdmin ...

  3. 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...

    我们辛苦录入的数据都希望能有重复利用的价值,一方面这些基础数据需要有数据库级的重复利用,程序级别的重复利用,另一方面还需要直接可以方便的导出倒入的功能比较好,虽然我们自己制作的统计分析功能很强大,但是 ...

  4. php调用python导出excel_如何使用Django导出Excel代码问题

    本篇文章主要介绍了Django 导出 Excel 代码的实例详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 这篇技术贴讲怎样在Django的框架下导出Excel, 最 ...

  5. ruoyi框架默认的导出Excel功能代码简析

    ruoyi框架默认导出Excel功能 项目使用的是RuoYi Bootstrap多模块版本4.7.2,启动项目后会有默认的导出功能.包括使用ruoyi自带代码生成器,都会有导出功能的附带.接下就讲解一 ...

  6. 导出Excel功能-从服务端到浏览器的简单处理

    导出Excel功能 从服务端到浏览器的简单处理, 仅供参考 服务端定义一个导出功能的关键代码 Java 定义一个export的功能函数,以下为关键代码(接口中的一部分处理逻辑): @Override ...

  7. layui导出Excel功能的两种方式的尝试

    第一种方式 利用layui自带的导出功能:在layui文档中有例子和代码 网址:https://www.layui.com/demo/table/parseData.html 只需要在前端界面加入to ...

  8. vue+iView实现导入与导出excel功能

    vue+iView实现导入与导出excel功能 一,需求: 1,导入导出的必要性 导入与导出在日常项目开发中经常用到, 批量导入功能可以快速插入添加数据. 导出功能则可方便直观明了拿到所需展示的重要数 ...

  9. 用python朗读字母-使用python编写一个语音朗读闹钟功能的示例代码

    想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...

最新文章

  1. VB 6.0中如何访问EXCEL 2007及EXCEL 2010
  2. python整数类型进制表示_python2学习经验(一) 变量数据类型
  3. python打开方式包括_python打开文件的方式有哪些
  4. linux普通用户配置自己的python环境
  5. 读《财务就是IT 企业财务信息系统》
  6. Python实现井字棋游戏
  7. IP地址是什么?它怎样分类?它和子网掩码的关系是什么?以太网和令牌环网分别是什么?
  8. win7将html设为桌面背景,win7系统将桌面背景设置为自己心仪类型的方法
  9. 怎么给word文档注音_怎么为整篇word文字添加拼音标注
  10. 小米真蓝牙耳机说明书_小米蓝牙耳机使用说明,开箱评测小米蓝牙耳机
  11. 计算机怎么看事件管理,如何打开事件查看器 win7事件查看器打开及使用方法介绍...
  12. 一文带你搞清楚USB、type-C、雷电三接口之间的区别与联系
  13. XCTF-WEB-cookie-解题思路
  14. 计算机视觉博士去向,为什么现在不看好 CV 方向了呢?
  15. Android MediaPlayer 代理 完成缓存、预缓存
  16. 土壤湿度检测仪c语言代码,单片机测土壤湿度可自动浇水并报警 带C#上位机源码...
  17. Padding填充以及加密模式概念
  18. 判断点在向量上的方向
  19. 来自测试工程师的自我感悟
  20. 案例34:基于Springboot在线互动学习网站开题报告设计

热门文章

  1. 简单大方的java自我介绍,简单大方的自我介绍
  2. 金蝶EAS,KSQL,执行数据库方言
  3. iOS 自动生成各种尺寸的App Icon 和 Launch Image( App Icon Gear)
  4. 最新美团-青龙——5-25
  5. 从阅读中记笔记的8个技巧
  6. 各行业容灾备份架构#容灾#,
  7. DSG-01-2B3B-A110-51T、DSG-01-2B3B-A100-70电磁控制换向阀
  8. 关于使用quartz动态增删改定时任务
  9. 软件体系结构网课第一次笔记
  10. 结构型设计模式(7种)