突然想记录一下这段代码,自己便写了个简单的demo及压缩工具类(一般不会说工具类我是在网上拷贝后重新修改了一下,哈哈哈),使用起来比较方便,以后导出csv或zip格式文件都可用,先写如何导出csv , 后边则是csv+图片导出zip
package com.hutool.test;
import cn.hutool.core.io.FileUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.*;
/**
* @author xqli7@iflytek.com
* @date 2019/1/25 17:25
* @description:
*/
@RestController
@RequestMapping("/test")
public class DataExportTest {
/**
* CSV导出表头信息
*/
private static final List<String> HEADS = Arrays.asList("测试名称", "测试数", "测试内容");
@GetMapping("/exportcsv")
public String export(HttpServletResponse response) {
List<List<Object>> dataMaps = new ArrayList<>();
List<Object> dataMap = new ArrayList<>();
dataMap.add("testName");
dataMap.add("1");
dataMap.add("这是一条测试数据");
dataMaps.add(dataMap);
//设置临时路径
String localTempPath = "D:\\iflytek\\hiseeJK\\temp";
String filePath = localTempPath + File.separator + "testTemplate" + ".csv";
try {
CsvUtils.exportCsv(filePath, HEADS, dataMaps);
CsvUtils.responseCsv(response, "导出测试" + ".csv", filePath);
return "导出成功";
} catch (Exception e) {
return "导出失败";
}
}
单独导出csv文件工具类,里面有注释就单独解释了
package com.hutool.test;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @author xqli7
** @date 2019/1/25 17:25
*/
public class CsvUtils {
private CsvUtils() {
}
private static final Logger LOG = LoggerFactory.getLogger(CsvUtils.class);
/**
* 读取CSV文件内容
*
* @param file 传入的CSV文件
* @return 读取的数据集合
*/
public static List<String[]> readCsv(File file, boolean isNoRepeatData) {
try (
DataInputStream in = new DataInputStream(new FileInputStream(file));
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "GBK"))
) {
//将第一行表头先读出,后面line读入的全部为数据内容
String firstLine = reader.readLine();
LOG.info("head:{}", firstLine);
String line;
List<String[]> data = new ArrayList<>();
Set<String> lines = new HashSet<>();
while ((line = reader.readLine()) != null) {
//未设置重复过滤 或者 设置重复过滤且未重复
//limit -1 防止无数据读取报角标越界异常
String[] item = line.split(",", -1);
if (isNoRepeatData) {
if (!lines.contains(line)) {
data.add(item);
lines.add(line);
}
} else {
data.add(item);
}
}
return data;
} catch (Exception e) {
LOG.error("读取csv文件出错", e);
return null;
}
}
/**
* 将CSV格式数据写入指定CSV文件
*
* @param filePath CSV文件写入的全路径
* @param heads 要导入的数据表头
* @param dataList 要导入的数据内容
* @Param fileName 导出时浏览器中展示

这篇博客介绍了如何使用Java实现CSV文件的导出以及将CSV文件和图片一起压缩成ZIP格式的工具类。提供了相关的代码示例,包括导出CSV文件和创建ZIP压缩文件的方法。通过访问特定的URL,可以触发导出和压缩操作。
最低0.47元/天 解锁文章
623

被折叠的 条评论
为什么被折叠?



