java实现导出csv文件+图片压缩成zip格式

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

突然想记录一下这段代码,自己便写了个简单的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 导出时浏览器中展示
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值