Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端React后端Django 导出Excel

前端React后端Django 导出Excel

作者头像
Wyc
发布于 2021-07-08 02:35:46
发布于 2021-07-08 02:35:46
67500
代码可运行
举报
文章被收录于专栏:Python研发Python研发
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dajngo查询数据,查询出来之后生成Excel保存本地


class ExportExcel(APIView):
    def post(self, request, *args, **kwargs):
        export_time = request.data.get('startEndTime')
        user_id = request.data.get('user_id')
        if len(user_id) == 1 and 0 in user_id:
            message_content = StatisticsMessageCount.objects.filter(
            creat_time__range=(export_time[0] + " 00:00:00", export_time[1] + " 23:59:59"))
        elif len(user_id) > 1 and 0 in user_id:
            return JsonResponse({"code": 201, "message": "导出失败,请把全部选项去除!"})
        else:
            message_content = StatisticsMessageCount.objects.filter(user_id__in=user_id,
                                                                    creat_time__range=(export_time[0] + " 00:00:00",
                                                                                       export_time[1] + " 23:59:59"))
        wb = xlwt.Workbook(encoding='utf8')
        sheet = wb.add_sheet('sheet', cell_overwrite_ok=True)
        style_heading = xlwt.easyxf("""
                font:
                    height 220;
                align:
                    vert center,
                    horiz center;
                pattern:
                    pattern solid,
                    fore-colour 0x16;
                borders:
                    left thin, 
                    right thin, 
                    top thin, 
                    bottom thin
                """)
        for i in range(0, len(message_content)):
            sheet.col(i).width = 256 * 30
            sheet.row(i).height = 20 * 80
        sheet.write(0, 0, '序号', style_heading)
        sheet.write(0, 1, '销售', style_heading)
        sheet.write(0, 2, '地区', style_heading)
        sheet.write(0, 3, 'Qustions', style_heading)
        sheet.write(0, 4, 'Answer', style_heading)
        sheet.write(0, 5, '解答人', style_heading)
        data_row = 0
        file_name = None
        for i in message_content:
            # 格式化datetime
            data_row += 1
            if len(user_id) > 1 or len(user_id) == 1 and 0 in user_id:
                file_name = "KPI统计"
            else:
                file_name = i.answerer
            sheet.write(data_row, 0, data_row)
            sheet.write(data_row, 1, i.sales)
            sheet.write(data_row, 2, i.area, )
            sheet.write(data_row, 3, i.problem)
            sheet.write(data_row, 4, i.answer)
            sheet.write(data_row, 5, i.answerer, )
        try:
            import os
            test_url = "http://127.0.0.1:8081"
            test_path = str('/medias/weekly/{}.xlsx'.format(file_name))
            ret = os.getcwd()
            wb.save(os.getcwd() + pord_path)
            return JsonResponse({"code": 200,
                                 "fileName": "{}.xlsx".format(file_name),
                                 "filePath": pord_url + pord_path })
        except Exception as e:
            print("异常: {}".format(e))
            return JsonResponse({"code": 201, "message": "导出失败,请关闭当前本地电脑打开的相同Excel重新导出!"})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
前端 react 

   exportExcel = () => {
        const {startEndTime, selectedItems} = this.state
        let currentUser = JSON.parse(localStorage.getItem('userInfo'));
        const {dispatch} = this.props
        if (startEndTime.length === 2) {
            dispatch({
                type: 'GetStaticsCount/exportExcelData',
                payload: {
                    apiPath: '/wx/kpi_export/',
                    user_id:  currentUser.weights > 0? selectedItems:[currentUser.id],
                    startEndTime
                },
                callback: response => {

                    // 这块是关键, 根据后台api返回的文件路径,在本地可以正常a标签下载,在服务器上不可以,直接通过链接打开是文件流形式
                    axios.post(response.filePath, '', {
                        headers: {
                            'Content-Type': 'application/x-www-form-urlencoded', //请求的数据类型为form data格式
                        },
                        'responseType': 'blob'  //设置响应的数据类型为一个包含二进制数据的 Blob 对象,必须设置!!!
                    }).then(function (response) {
                        console.log(`数据流: ${response.data}`)
                        const blob = new Blob([response.data]);
                        const fileName = 'KPI统计.xlsx';
                        const linkNode = document.createElement('a');
                        linkNode.download = fileName; //a标签的download属性规定下载文件的名称
                        linkNode.style.display = 'none';
                        linkNode.href = URL.createObjectURL(blob); //生成一个Blob URL
                        document.body.appendChild(linkNode);
                        linkNode.click();  //模拟在按钮上的一次鼠标单击
                        URL.revokeObjectURL(linkNode.href); // 释放URL 对象
                        document.body.removeChild(linkNode);
                    }).catch(function (error) {
                        console.log(error);
                    });
                }
            })
        } else {
            message.error("请选择导出时间")
        }
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【详解】SpringMVCPOI导出EXCEL
在企业级应用开发中,数据的导入导出是一项常见的需求。Excel 作为最常用的数据处理工具之一,经常被用来存储和展示数据。本文将介绍如何在 SpringMVC 框架中使用 Apache POI 库来实现 Excel 文件的导出功能。
大盘鸡拌面
2025/04/23
920
django xlwt实现资产导出功能
做个记录 views import xlwt class ExAssetView(LoginRequiredMixin,View): def get(self,request): row = 1 style_heading = xlwt.easyxf(""" font: name Arial, colour_index white,
程序员同行者
2018/07/02
4430
Python xlwt导出excel完整
有一组任务数据,要把它excel下载下来,如果仅仅导出,用csv导出就很方便。
py3study
2020/01/10
6110
django使用xlwt导出excel文件
这里只是mark一下导出的方法,并没有做什么REST处理和异常处理。 维护统一的style样式,可以使导出的数据更加美观。 def export_excel(request): # 设置HttpResponse的类型 response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment;filename=user.xls'
用户1225216
2018/03/05
1.4K0
📃前端导出Excel实践:探索xlsl的实现方式
使用XLSX库,你可以读取现有的Excel文件,提取其中的数据和元数据。例如,假设你有一个名为"data.xlsx"的Excel文件,你可以通过以下方式读取它:
linwu
2023/07/27
1.2K0
【Django | 开发】面试招聘网站(增加csv,excel导出&企业域账号集成&日志管理功能)
在应用interview创建managment文件以及该目录下command文件,创建import_candidate.py进行脚本操作、
计算机魔术师
2023/10/14
1920
Python实现数据库一键导出为Excel表格!大大的增加了工作效率!
数据库数据导出为excel表格,也可以说是一个很常用的功能了。毕竟不是任何人都懂数据库操作语句的。
IT派
2018/07/30
1.1K0
Python实现数据库一键导出为Excel表格!大大的增加了工作效率!
Django实践-06导出excel/pdf/echarts
官网:https://www.djangoproject.com/ 博客:https://www.liujiangblog.com/ 本博客内容参考git:https://gitcode.net/mirrors/jackfrued/Python-100-Days 一些细节问题,大家可以查看git连接。本文主要的改变为把代码升级为django4.1版本。
用户2225445
2023/10/16
2460
Django实践-06导出excel/pdf/echarts
Java POI 导出EXCEL经典实现
在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者PDF,我这里就分别给大家介绍下。(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^)
Java团长
2018/08/03
2.5K0
【Django | 开发】面试招聘网站(增加csv,excel导出&企业域账号集成&日志管理功能)
在应用interview创建managment文件以及该目录下command文件,创建import_candidate.py进行脚本操作、
计算机魔术师
2022/08/19
3680
【Django | 开发】面试招聘网站(增加csv,excel导出&企业域账号集成&日志管理功能)
Django 结合Vue实现前端页面导出为PDF
https://www.djangoproject.com/download/2.0.13/tarball/
授客
2020/09/08
2.2K0
Django 结合Vue实现前端页面导出为PDF
java导出Excel表格
最近自己着手写了一个前后端分离的后台管理系统(主要是写着玩,java还是熟悉一点,所以前后端均是自己写),后端使用的Java SpringMVC。后来想着在用户管理中添加一个导出功能,所以就上网查了资料,实现了简单的导出功能,在这里记录下自己的过程。 1、在java项目中引入导出功能需要的jar包   poi-3.9.jar   poi-examples-3.9.jar   poi-excelant-3.9.jar   poi-ooxml-3.9.jar   poi-ooxml-schemas-3.9.ja
用户1174387
2018/01/17
4.7K0
java导出Excel表格
java统计分析数据Excel导出
          java使用poi导出excel只要把数据组织好,按照固定的格式输出就可以,需要注意的是导出的格式如果是不是中规中矩的格式(第一行标题,第二行以下是数据)的话,需要用模版或者根据单元格位置固定导出,大家可以把这个方法抽成一个共同的方法方便以后开发项目的时候继续使用。后续我会分享更多的技术相关的内容,请大家多多关注。
十分钟空间
2022/08/17
7790
导出excel多sheet页
最近碰到这样一个需求,就是任课教师需要把自己所教学科的学生的每次作业全部导出来。每一个教师不可能只教一个班,可能带多个班。那么导出的成绩就想是多个班的学生每次作业成绩。这样就用到了excel的sheet页。
微醺
2020/06/17
1.9K0
vue实现excel导出
1.引入组件: npm install file-saver xlsx -S 2.在需要的页面引入: import FileSaver from 'file-saver' import XLSX from 'xlsx' 3.封装组件 <template> <transition name="fadeIn" > <div v-show='false'> <el-table :id="exportExcelInfo.excelId" :data="tableDat
安德玛
2022/03/05
6390
重构:以Java POI 导出EXCEL为例2
上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数。这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等。
云枭
2019/02/25
8810
java导出excel的两种方式
这篇在我的csdn上阅读数近三万,点赞几十个,算是比较火的一篇了,在这里分享一下,公司总免不了与文件导入导出打交道,前段时间我做了媒体预览服务,媒体打包服务,最近又在做大文件拆分服务,以后会分享其他相关的,没时间读,可以先收藏。
jiankang666
2022/05/12
2.6K0
java导出excel的两种方式
超级简单POI导出Excel实战
在一般的生产管理系统都会将数据通过页面导出到Excel,这里以Java为例通过第三方开源poi进行对Excel的操作,具体操作如下
sunny1009
2019/09/04
2.9K2
超级简单POI导出Excel实战
poi导出excel动态表头并合并
import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
余生大大
2022/10/25
2K0
poi导出excel动态表头并合并
Java POI 导出Excel经典实现 导出Excel弹出下载框 Spring Boot【不定期更新】
在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下。(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^)
全栈程序员站长
2022/09/02
1.2K0
相关推荐
【详解】SpringMVCPOI导出EXCEL
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验