java生成CSV文件

Posted codecat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

结果

生成文件如下图:

技术图片

打开效果如下:

技术图片

 

以上是关于java生成CSV文件的主要内容,如果未能解决你的问题,请参考以下文章

java 对CSV 文件的读取与生成

java将数据生成csv文件

记一次java生成csv文件乱码的解决过程 (GB2312编码)

java将查询数据导出成csv文件的问题

vb.net 怎么生成csv文件与怎么读取csv文件

无法从 java 中的 AVRO 文件生成 CSV