一、准备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. error while loading shared libraries: liblzma.so.5: cannot open shared object file: No such file or directory

    CentOS6安装mongo报错 error while loading shared libraries: liblzma.so.5: cannot open shared object file: ...

  2. This app has crashed because it attempted to access privacy-sensitive data without a usage descripti

    运行环境 XCode 8.2.1 问题描述 当调取相册的时候APP崩溃并显示标题的错误:This app has crashed because it attempted to access priv ...

  3. 运行前端React框架出现node Error: bind EADDRINUSE null的解决方法

    运行前端React代码时,出现这样的错误: node Error: bind EADDRINUSE null 后来发现端口号冲突,换个端口号后问题就可以解决了.

  4. Java-Filter:过滤器请求拦截

    1.概念 web中的过滤器:当访问服务器资源时,过滤器可以将请求拦截下来,完成一些特殊的功能 过滤器的作用: 一般用于完成通用的操作,如:登录验证,统一编码处理,敏感字符过滤 2.快速入门 1.步骤 ...

  5. C++11标准库<chrono><future> <atomic><condition_variable><mutex><thread>梳理 (5万字)

    <chrono> C++11中提供了日期和时间相关的库chrono. chrono库主要包含三种类型的类:时间间隔duration.时钟clocks.时间点time point. 时间间隔 ...

  6. API是什么

    API就是接口,就是通道,负责一个程序和其他软件的沟通,本质是预先定义的函数.譬如我们去办事,窗口就类似一个API,如果对于某一件不简单的事情,这个窗口能做到让我们"最多跑一次", ...

  7. 重磅消息:微软发布多平台应用UI框架 MAUI,网友直呼:牛x

    本文内容来自微软开发博客:https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/ 转载请注明来源,公众 ...

  8. 【游记】CSP 2023

    day 0 和 printfmingren 整理了一下不会的知识点,发现有点多,遂开摆 音游真的太好玩了 对着<算法竞赛进阶指南>复习了下对拍器的写法,把部分算法的模板又打了一遍 感觉前途 ...

  9. 【楔子】单细胞测序-最佳的分析Pipeline

    作者:starlitnightly 日期:2023.07.14 !!! note 楔子 从事单细胞分析也有一段时间了,国内大部分中文教程都是使用R语言进行分析,使用Python的还比较少,或者是直译s ...

  10. C# 12 新增功能实操!

    前言 今天咱们一起来探索并实践 C# 12 引入的全新功能! C#/.NET该如何自学入门? 注意:使用这些功能需要使用最新的 Visual Studio 2022 版本或安装 .NET 8 SDK ...