一、准备jar  如下所以放入maven配置文件中

二、controller层

三、SERVICE层

四、CsvUtil文件

/**
* csv文件导入导出
*/
public class CsvUtil {

/**
* 获取csv文件头部信息
* @param inputWay 模板文件路径
* @return
* @throws IOException
*/
public static List<String> getHeader(String inputWay) throws IOException {
List<String> headers = new ArrayList<>();
DataInputStream in = new DataInputStream(new FileInputStream(new File(inputWay)));
BufferedReader br= new BufferedReader(new InputStreamReader(in,"GBK"));
CSVParser parser = CSVFormat.EXCEL.parse(br);
CSVRecord strings = parser.getRecords().get(0);
int size = strings.size();
for (int i = 0; i < size; i++) {
headers.add(strings.get(i));
}
return headers;
}

/**
* 生成csv文件
* @param headers csv文件头部信息
* @param outputWay 输出地址
* @param data 填充数据
* @throws IOException
*/
public static void generateCsvFile(List<String> headers, String outputWay, List<List<Object>> data) throws IOException {
FileOutputStream fos = new FileOutputStream(outputWay);
OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
String[] toBeStored = headers.toArray(new String[headers.size()]);
CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(toBeStored);
CSVPrinter csvPrinter = new CSVPrinter(osw, csvFormat);
for (int i = 0; i < data.size(); i++) {//处理掉最后一个版本号
List<Object> singleData = data.get(i);
csvPrinter.printRecord(singleData);
}
csvPrinter.flush();
csvPrinter.close();

}

/**
* 写出csv文件流
* @param response
* @param inputWay
*/
public static void exportCsvFile(HttpServletResponse response,String inputWay,String fileName) throws IOException {
OutputStream out = response.getOutputStream();
byte[] b = new byte[1024];
File fileLoad = new File(inputWay);
response.reset();
response.setContentType("application/csv");
response.setHeader("content-disposition", "attachment;filename="+ new String((fileName+".csv").getBytes()));
long fileLength = fileLoad.length();
String length1 = String.valueOf(fileLength);
response.setHeader("Content_Length", length1);
FileInputStream in = new FileInputStream(fileLoad);
int n;
while ((n = in.read(b)) != -1) {
out.write(b, 0, n); //每次写入out1024字节
}
in.close();
out.close();
// 删除临时文件
fileLoad.delete();
}
}

五、总结

中间处理业务数据就可以了,放入到保存的list中,输出格式一致就可以成功导出了!

CSV文件导出详细讲解的更多相关文章

  1. python使用pymongo访问MongoDB的基本操作,以及CSV文件导出

    1. 环境. Python:3.6.1 Python IDE:pycharm 系统:win7 2. 简单示例 import pymongo # mongodb服务的地址和端口号mongo_url = ...

  2. 《手把手教你》系列技巧篇(六十九)-java+ selenium自动化测试 - 读取csv文件(详细教程)

    1.简介 在实际测试中,我们不仅需要读取Excle,而且有时候还需要读取CSV类的文件.如何去读取CSV的文件,宏哥今天就讲解和分享一下,希望对你能够有所帮助.前面介绍了如何读取excel文件,本篇介 ...

  3. php 用csv文件导出大量数据初方案

    背景:接手的项目中支持导出一批数据,全数量在50W左右.在接手的时候看代码是直接一次查询MySQL获得数据,然后用header函数直接写入csv,用户开始导出则自动下载.但是,在全导出的时候,功能出现 ...

  4. CSV文件导出2

    public void exportCSVFile( HttpServletResponse response, ResultSet rs,String fileName,String headers ...

  5. csv文件导出

    参考博客:http://www.cnblogs.com/mingforyou/p/4103132.html 导入jar包javacsv.jar 链接:http://pan.baidu.com/s/1i ...

  6. ifix历史数据(H04/H08/H24)转换为CSV文件导出

    在最近的一次环保数据维护中,由于自己疏忽导致数据库中TP值并未有效记录,还好历史趋势有相关记录,问题是我该如何将.H24文件记录导出?在逛论坛后,无意发现一款工具解决了我的燃眉之急-HTD2CSV.e ...

  7. 关于jmeter读取CSV文件的详细设置

    jmeter 读取excel数据使用的方法是使用Jmeter CSV Data Set Config参数化 但是将excel文件保存成csv格式后,jmeter读取后返回的数据总是出现乱码问题, 以下 ...

  8. [转载] php用csv文件导出大量数据

    header ( "Content-type:application/vnd.ms-excel" ); header ( "Content-Disposition:fil ...

  9. 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题

    2013-8-5 1 Linq解决DataTable按照某一列的值排序 在之前的总结中提到过对拼接而成的复合的DataTable按照某一列值的大小排序,那个主要的思想是在新建表结构时将要排序的那一列的 ...

  10. thinkphp导出csv文件,用表格输出excel

    1.thinkphp导出csv文件 导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this ...

随机推荐

  1. 阿里也出手了!Spring CloudAlibaba AI问世了

    写在前面 在之前的文章中我们有介绍过SpringAI这个项目.SpringAI 是Spring 官方社区项目,旨在简化 Java AI 应用程序开发, 让 Java 开发者想使用 Spring 开发普 ...

  2. C# 设置PDF表单不可编辑、或提取PDF表单数据

    PDF表单是PDF中的可编辑区域,允许用户填写指定信息.当表单填写完成后,有时候我们可能需要将其设置为不可编辑,以保护表单内容的完整性和可靠性.或者需要从PDF表单中提取数据以便后续处理或分析. 之前 ...

  3. Linux 提权-MySQL UDF

    本文通过 Google 翻译 MySQL User Defined Functions – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词 ...

  4. JS模拟循环批量请求后台接口

    使用async, await处理异步请求.用Promise, setTimeout函数模拟后台接口 <!DOCTYPE html> <html> <script type ...

  5. 【Vyos-开源篇-1】- VMware 安装 VyOS 虚拟机

    文章说明:使用VMware ESXi和VMware Workstation安装vyos软路由. 一.项目准备 1.1.VMware ESXi 我家里的是一台8核心,20G内存,2T的N5105工控机, ...

  6. 【FAQ】HarmonyOS SDK 闭源开放能力 —Ads Kit

    1.问题描述: 开屏广告效果最好的实现方式? 解决方法: 1.动画效果和开发者的实现方式有关,和开屏广告页面本身没什么关系的: 2.示例代码中使用Router跳转的方式展示广告,主要是用于演示广告接口 ...

  7. 嵌入式基础测试手册——基于NXP iMX6ULL开发板(4)

    前 言 本文档适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 64bit 虚拟机:VMware15.1.0 Linux开发环境:Ubuntu18.04.4 ...

  8. Taro 滚动切换tab页

    import React, { Component } from 'react' import { View, Text, ScrollView } from '@tarojs/components' ...

  9. JVM(Java虚拟机)整理(二):排错调优

    前言 上一篇内容:JVM(Java虚拟机)整理(一) Java 内存模型(JMM)详解 声明:本章节转载自 Info 上 深入理解Java内存模型.PDF文档下载 深入理解Java内存模型[程晓明] ...

  10. SQL如何优化和设计索引

    SQL优化 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引: 避免使用 NULL 字段,很难查询优化且占用额外索引空间,可以设置默认值0或'': ...