public byte[] getCSVDataByte(MarketingStatisticsQueryDTO dto, StatisticsFileMark statisticsFileMark) { String fileName = statisticsFileMark.getName() + FILE_END; StopWatch stopWatch = new StopWatch("电销自定义报表导出" + fileName); try { log.info("CSV电销自定义报表导出{},[{}]", fileName, dto); stopWatch.start("参数处理"); MarketingStatisticsQueryDTO queryDTO = queryTableData(dto); stopWatch.stop(); log.info("CSV电销营销统计报表查询参数queryDTO:{}", queryDTO); stopWatch.start("数据查询"); List<MarketingStatisticsRespVO> result = marketingStatisticsMapper.queryMarketingStatisticsData(queryDTO); stopWatch.stop(); log.info("CSV电销营销统计报表导出{},共计:{}条数据", fileName, result.size()); stopWatch.start("数据导出"); try (ByteArrayOutputStream csvByteArrayOutputStream = new ByteArrayOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(csvByteArrayOutputStream, "GBK")); CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(columnToHeader(dto)))) { for (MarketingStatisticsRespVO vo : result) { switch (statisticsFileMark) { case SD: csvPrinter.printRecord(vo.getImportDate(), vo.getProduct(), vo.getStage(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getFirstDrawCashDate(), vo.getQuota(), vo.getMarketSign(), vo.getListNum(), vo.getDrawCashNum()); break; case SIGN: csvPrinter.printRecord(vo.getImportDate(), vo.getFirstDrawCashDate(), vo.getSignDate(), vo.getMarketSign(), vo.getProduct(), vo.getStage(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getTerminalScore(), vo.getCustType(), vo.getListNum(), vo.getDrawCashNum(), vo.getSignNum()); break; case AI: csvPrinter.printRecord(vo.getImportDate(), vo.getProduct(), vo.getStage(), vo.getFirstDrawCashDate(), vo.getLoanDate(), vo.getMarketSign(), vo.getGrade(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getMarketSign(), vo.getListNum(), vo.getLoanNum(), vo.getTotalLoanAmount(), vo.getTotalDrawCashAmount()); break; case LOAN: csvPrinter.printRecord(vo.getImportDate(), vo.getFirstDrawCashDate(), vo.getLoanDate(), vo.getAgentName(), vo.getAgentNo(), vo.getOnsite(), vo.getMarketSign(), vo.getProduct(), vo.getStage(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getTerminalScore(), vo.getCustType(), vo.getDrawCashNum(), vo.getSignNum(), vo.getLoanNum(), vo.getTotalSignAmount(), vo.getTotalLoanAmount(), vo.getTotalDrawCashAmount()); break; case ALL: csvPrinter.printRecord(vo.getImportDate(), vo.getFirstDrawCashDate(), vo.getMarketSign(), vo.getProduct(), vo.getStage(), vo.getDecisionCompleteType(), vo.getGrade(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getOverallDrawCash(), vo.getQuota(), vo.getMarketingRuleId(), vo.getQuotaGrade(), vo.getTerminalScore(), vo.getCustType(), vo.getQuotaCno(), vo.getQuotaProcess(), vo.getSignDate(), vo.getLoanDate(), vo.getListNum(), vo.getDrawCashNum(), vo.getSignNum(), vo.getLoanNum(), vo.getTotalSignAmount(), vo.getTotalLoanAmount(), vo.getTotalDrawCashAmount()); break; default: break; } csvPrinter.flush(); } try (ByteArrayOutputStream zipByteArrayStream = new ByteArrayOutputStream(); ZipOutputStream zipOutputStream = new ZipOutputStream(zipByteArrayStream)) { ZipEntry zipEntry = new ZipEntry(fileName); zipOutputStream.putNextEntry(zipEntry); zipOutputStream.write(csvByteArrayOutputStream.toByteArray()); zipOutputStream.closeEntry(); zipOutputStream.close(); stopWatch.stop(); return zipByteArrayStream.toByteArray(); } catch (Exception e) { log.error("CSV电销营销统计报表压缩异常!", e); } } } catch (Exception e) { log.error("CSV电销营销统计报表导出异常!", e); } finally { if (stopWatch.isRunning()) { stopWatch.stop(); } log.info("CSV电销营销统计报表导出,耗时:{}", stopWatch.prettyPrint(TimeUnit.MILLISECONDS)); } return new byte[0]; } //发邮件
private void createMailMessageSendDTO(byte[] fileByte, String fileName, String email) { log.info("电销自定义报表自动发送邮件:{}", email); if (StringUtils.isNotBlank(email)) { try { MailMessageSendDTO mailMessageSendDTO = new MailMessageSendDTO(); mailMessageSendDTO.setSubject(fileName); mailMessageSendDTO.setText("请查看附件获取电销自定义报表。"); mailMessageSendDTO.setTo(email); mailMessageSendDTO.setSendId("1"); mailMessageSendDTO.setSendName("system"); List<FileTranDTO> fileTranDTOList = new ArrayList<>(); FileTranDTO fileTranDTO = new FileTranDTO(); fileTranDTO.setFileName("电销自定义报表" + fileName + ".zip"); fileTranDTO.setFileByte(fileByte); fileTranDTOList.add(fileTranDTO); FileTranListDTO fileTranListDTO = new FileTranListDTO(); fileTranListDTO.setFileList(fileTranDTOList); mailMessageSendDTO.setAttachment(fileTranListDTO); // 发送邮件 remoteEmailService.send(mailMessageSendDTO); log.info("电销自定义报表邮件发送成功-{}", fileName); } catch (Exception e) { log.error("电销自定义报表邮件发送失败", e); } } }
相关推荐
在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...
"CSV大数据分批并压缩导出"这个话题聚焦于如何高效、安全地处理大量数据,避免内存溢出的问题。以下是对这个主题的详细解释: CSV(Comma Separated Values)是一种广泛使用的数据格式,它以纯文本形式存储表格数据...
在IT领域,高效地导出CSV文件是一项重要的技能,特别是在大数据处理、数据分析以及报表生成等场景。下面我们将详细探讨如何实现高性能的CSV导出。 1. **内存管理与数据分块** 高性能CSV导出首先要考虑的是内存管理...
标题中的“java 大数据导出csv小工具”指的是一个基于Java编程语言开发的应用程序,其主要功能是将大量数据转换并导出为CSV(逗号分隔值)格式的文件。CSV是一种通用的文件格式,广泛用于数据交换,因为它可以被...
NULL 博文链接:https://yuebancanghai.iteye.com/blog/1625484
6. CSV压缩 为了减小文件体积,可以将CSV文件压缩成Gzip或Zip格式。这可以通过编程语言中的相应库实现,如Python的`gzip`和`zipfile`模块。 7. 性能优化 - 使用合适的数据结构:如使用`pandas`的`DataFrame`处理CSV...
阿里EasyExcel是一款由阿里巴巴开发的轻量级Java库,专门用于处理Excel文件,尤其是数据的导入和导出。它的设计目标是低内存消耗、高效性能和简单易用。在这个"阿里EasyExcel导出案例"中,我们将深入探讨如何利用...
然后,我们可以通过JavaScript代码来初始化表格并配置导出选项: ```javascript $(function() { $('#table').bootstrapTable({ columns: [/* 表格列定义 */], data: [/* 表格数据 */], exportTypes: ['csv', '...
批量导出CSV文件可能涉及到数据库查询、数据框架操作或命令行工具。例如,在Python中,我们可以使用pandas的`to_csv()`函数将DataFrame对象写入CSV文件,而在SQL环境中,我们可以执行SELECT INTO OUTFILE语句将查询...
### 如何将WinCC归档的历史数据导出到EXCEL CSV文件 #### 一、概述 在工业自动化领域,WinCC (Windows Control Center) 是一款广泛使用的监控与数据采集(SCADA)软件,用于实现对各种工业过程的监控。随着时间的...
在本文中,我们将深入探讨如何使用Kettle将数据查询结果导出为CSV(逗号分隔值)文件格式。 首先,我们需要创建一个新的转换。在Kettle环境中,点击“文件”菜单,然后选择“新建”->“转换”。这将打开一个空白的...
压缩包子文件的文件名称列表中提到了两个文件:"淘宝助理5202103221712.csv" 和另一个同名但可能不同的文件,这可能是由于文件的版本或日期差异。处理这种情况时,我们需要遍历所有文件,对每个CSV文件执行相同的...
提供的"export"压缩包子文件可能包含了实现这些功能的部分代码,你可以解压并学习其中的实现细节,加深对这些知识点的理解和应用。 总之,JavaBean结合反射机制可以灵活地处理数据,而通过各种库支持,我们可以方便...
总结,批量导出CSV文件,特别是面对千万级数据时,理解并合理运用POI的流式处理特性至关重要。通过分块写入,我们可以避免一次性加载大量数据导致的内存压力,确保系统的高效稳定运行。对于JXL,尽管功能丰富,但在...
"Jmesa示例[分页,排序,导出CSV,EXCEL,PDF]" 这个标题提到了几个关键功能点,它们是Jmesa库在实际应用中的常见操作: 1. **分页**:这是在处理大量数据时非常重要的功能,允许用户按指定数量的数据分批次加载和显示...
将您的 Google 搜索历史导出为 CSV Google 刚刚添加了将完整搜索历史导出为 JSON 的功能。 这太酷了! 不幸的是,导出的表单是一系列不太容易使用的 JSON 文件。 search2csv将它们全部连接成一个仅包含时间戳和...
本话题主要探讨如何高效地处理百万级别的数据导出,并利用内置的压缩功能优化存储和传输。以下是对这个主题的详细阐述: 一、Excel与大数据 Excel是一款广泛使用的电子表格软件,它在处理中小规模数据时表现出色。...
在这个场景中,我们关注的是如何利用shell脚本来实现特定的功能:根据时间条件导出数据库表数据,计算文件信息,压缩文件,以及通过FTP上传到指定的远程目录。下面将详细阐述这些知识点。 首先,我们需要理解`shell...
压缩包子文件的文件名称列表中,我们可以看到几个可能与数据库管理和导出相关的工具: - `cbsidlm-tr1_11-FlySpeed_SQL_Query-BP-10745925.exe` 可能是一个SQL查询工具,如FlySpeed SQL Query,它可能提供了多种...
文档中包括使用流文件读取CSV文件、SqlServer的各种... 对统计好的文件进行的导出CSV和excel操作。本项目还涉及到文件的下载操作及断点续传操作,以及性能监视的部分功能。可谓多重技术混合,对初步入门的人员有所帮助