java csv

2020-11-20  本文已影响0人  虾米咬小米

java csv 官网

添加maven 依赖:

<dependency>
    <groupId>net.sourceforge.javacsv</groupId>
    <artifactId>javacsv</artifactId>
    <version>2.0</version>
</dependency>


public class ReadAndWriterCsvFlie {

    // 需要写入的 csv 文件路径
    public static final String WRITE_CSV_FILE_PATH = "/Users/a123123/Work/flink-study/write_test.csv";

    /**
     * 生成 csv 文件
     */
    public static void writeCsvFile(String writeCsvFilePath) {
        // 创建 CSV Writer 对象, 参数说明(写入的文件路径,分隔符,编码格式)
        CsvWriter csvWriter = new CsvWriter(writeCsvFilePath,',', Charset.forName("GBK"));

        try {
            // 定义 header 头
            String[] headers = {"订单号", "用户名", "支付金额"};
            // 写入 header 头
            csvWriter.writeRecord(headers);

            // 写入一千条记录
            for (int i = 0; i < 1000; i++) {
                String orderNum = UUID.randomUUID().toString();
                String userName = "用户" + i;
                String payMoney = String.valueOf(i);

                // 写入行
                csvWriter.writeRecord((String[]) Arrays.asList(orderNum, userName, payMoney).toArray());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            csvWriter.close();
        }
    }

    public static void main(String[] args) {
        writeCsvFile(WRITE_CSV_FILE_PATH);
    }
}

public class ReadAndWriterCsvFlie {

    // 需要写入的 csv 文件路径
    public static final String WRITE_CSV_FILE_PATH = "/Users/a123123/Work/flink-study/write_test.csv";

    /**
     * 读取 csv 文件
     */
    public static void readCsvFile(String readCsvFilePath) {
        // 缓存读取的数据
        List<String[]> content = new ArrayList<>();

        try {
            // 创建 CSV Reader 对象, 参数说明(读取的文件路径,分隔符,编码格式)
            CsvReader csvReader = new CsvReader(readCsvFilePath, ',', Charset.forName("GBK"));
            // 跳过表头
            csvReader.readHeaders();

            // 读取除表头外的内容
            while (csvReader.readRecord()) {
                // 读取一整行
                String line = csvReader.getRawRecord();
                System.out.println(line);

                content.add(csvReader.getValues());
            }
            csvReader.close();

            for (int row = 0; row < content.size(); row++) {
                // 读取第 row 行,第 0 列的数据
                String orderNum = content.get(row)[0];
                System.out.println("==> orderNum: " + orderNum);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        readCsvFile(WRITE_CSV_FILE_PATH);
    }
}

  public boolean importFile(MultipartFile multipartFile) {

        if (multipartFile.isEmpty()) throw new BusinessException("上传内容为空");
        boolean successful;
        try {

            // 用来保存数据
            ArrayList<String[]> csvFileList = new ArrayList<String[]>();
            List<ThjlEntity> tempList = new ArrayList<>();
            // 创建CSV读对象 例如:CsvReader(文件路径,分隔符,编码格式);
            CsvReader reader = new CsvReader(multipartFile.getInputStream(), ',', Charset.forName("GB2312"));
            // 跳过表头 如果需要表头的话,这句可以忽略
            reader.readHeaders();
            // 逐行读入除表头的数据
            while (reader.readRecord()) {
                System.out.println(reader.getRawRecord());
                String s = reader.get(0);
                csvFileList.add(reader.getValues());

                ThjlEntity thjlEntity = new ThjlEntity();
                thjlEntity.setThsj(reader.get(0));
                thjlEntity.setYhhm(reader.get(1));
                thjlEntity.setBdxm(reader.get(2));
                thjlEntity.setBdsfz(reader.get(3));
                thjlEntity.setBddz(reader.get(4));
                thjlEntity.setYhgsd(reader.get(5));
                thjlEntity.setImei(reader.get(6));
                thjlEntity.setDfhm(reader.get(7));
                thjlEntity.setDdxm(reader.get(8));
                thjlEntity.setDdsfz(reader.get(9));
                thjlEntity.setDddz(reader.get(10));
                thjlEntity.setDdgsd(reader.get(11));
                thjlEntity.setHjlx(reader.get(12));
                thjlEntity.setThsc(reader.get(13));
                thjlEntity.setThszd(reader.get(14));
                thjlEntity.setLac(reader.get(15));
                thjlEntity.setCi(reader.get(16));
                thjlEntity.setJd(reader.get(17));
                thjlEntity.setWd(reader.get(18));
                thjlEntity.setJzdz(reader.get(19));


                tempList.add(thjlEntity);

            }
            reader.close();


             successful = this.saveBatch(tempList);

        } catch (Exception e) {
            log.error("系统异常",e);
            throw new BusinessException(e.getMessage());
        }

        return successful;
    }
 @GetMapping("/download")
    public void download(HttpServletResponse response) throws Exception {
            try {
                String path = "C:\\Users\\zpf\\Desktop\\1_220专案(1)_通话记录_话单.csv";

                /**
                 * 写入csv结束,写出流
                 */
                File tempFile = new File(path);
                OutputStream out = response.getOutputStream();
                byte[] b = new byte[10240];
                File fileLoad = new File(tempFile.getCanonicalPath());
                response.reset();
                response.setContentType("application/csv");
                response.setHeader("content-disposition", "attachment; filename=通话记录模板.csv");
                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();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

参考:https://juejin.im/post/6844904114690719752

上一篇 下一篇

猜你喜欢

热点阅读