zoukankan      html  css  js  c++  java
  • java生成CSV文件

    内容简介

    本文内容使用java实现数据生成CSV文件,有关CSV文件知识请参考:CSV (逗号分隔值文件格式)

    实现代码(仅供参考,请根据实现情况来修改)

    /**
     * 坐标点参数实体类
     */
    public class PointsParamDto {
        /**
         * 坐标id(由1开始,累加1,这样的:1,2,3,4,5...)
         */
        private String pointId;
    
        /**
         * X 坐标点
         */
        private String x;
    
        /**
         * X 坐标点
         */
        private String y;
    
        public PointsParamDto(){}
    
        public PointsParamDto(String pointId,String x,String y){
            this.pointId = pointId;
            this.x = x;
            this.y = y;
        }
    
        public String getPointId() {
            return pointId;
        }
    
        public void setPointId(String pointId) {
            this.pointId = pointId;
        }
    
        public String getX() {
            return x;
        }
    
        public void setX(String x) {
            this.x = x;
        }
    
        public String getY() {
            return y;
        }
    
        public void setY(String y) {
            this.y = y;
        }
    
        public String toRow(){
            return String.format("%s,%s,%s",this.pointId,this.x,this.y);
        }
    }
    PointsParamDto
    /**
     * 生成csv文件
     * @param pointsList
     * @return
     */
    private void PointsToCsvFile(List<PointsParamDto> pointsList){
        if (pointsList!=null && pointsList.size() > 0){
            // 表格头
            String[] headArr = new String[]{"PointId", "X", "Y"};
            //CSV文件路径及名称
            LocalDateTime localDateTime = LocalDateTime.now();
            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
            String filePath = "E:\TestCsvDirectory"; //CSV文件路径
            String fileName = "CSV_"+ df.format(localDateTime) +".csv";//CSV文件名称
            File csvFile = null;
            BufferedWriter csvWriter = null;
            try {
                csvFile = new File(filePath + File.separator + fileName);
                File parent = csvFile.getParentFile();
                if (parent != null && !parent.exists()) {
                    parent.mkdirs();
                }
                csvFile.createNewFile();
    
                // GB2312使正确读取分隔符","
                csvWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024);
    
                //这部分在第一行居中展示文件名称,根据实际情况,可选择取消注释
                /*int num = headArr.length / 2;
                StringBuffer buffer = new StringBuffer();
                for (int i = 0; i < num; i++) {
                    buffer.append(",");
                }
                csvWriter.write(buffer.toString() + fileName + buffer.toString());
                csvWriter.newLine();*/
    
                // 写入文件头部标题行
                csvWriter.write(String.join(",", headArr));
                csvWriter.newLine();
    
                // 写入文件内容
                for (PointsParamDto points : pointsList) {
                    csvWriter.write(points.toRow());
                    csvWriter.newLine();
                }
                csvWriter.flush();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    csvWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    调用

    List<PointsParamDto> pointsParamDtos = new ArrayList<>();
    pointsParamDtos.add(new PointsParamDto("1","62.05932617","54.60449277"));
    pointsParamDtos.add(new PointsParamDto("2","62.42138672","54.06616269"));
    pointsParamDtos.add(new PointsParamDto("3","63.22387695","52.02270566"));
    pointsParamDtos.add(new PointsParamDto("4","61.32324219","53.60449277"));
    pointsParamDtos.add(new PointsParamDto("5","62.68603516","54.03320371"));
    PointsToCsvFile(pointsParamDtos);

    结果

    生成文件如下图:

    打开效果如下:

  • 相关阅读:
    NullPointerException异常没有异常栈打印问题追踪
    Nginx服务器的安装和卸载
    线程池——ThreadPoolExecutor
    Nginx简介
    线程池框架简介
    同步工具——Phaser
    你不知道的搜索技巧?
    数据库并发处理
    索引-建立框架篇
    Leetcode 84 求直方图中矩形的最大面积
  • 原文地址:https://www.cnblogs.com/codecat/p/11083530.html
Copyright © 2011-2022 走看看