美文网首页程序员
采用commons-csv数据转CSV文件

采用commons-csv数据转CSV文件

作者: JiangCheng97 | 来源:发表于2019-04-22 18:13 被阅读0次

    采用commons-csv数据转CSV文件

    • 导入pom.xml依赖

          <dependency>
              <groupId>org.apache.commons</groupId>
              <artifactId>commons-csv</artifactId>
              <version>1.5</version>
          </dependency>
      
          <dependency>
              <groupId>org.apache.poi</groupId>
              <artifactId>poi</artifactId>
              <version>3.17</version>
          </dependency>
      
          <dependency>
              <groupId>org.apache.poi</groupId>
              <artifactId>poi-ooxml</artifactId>
              <version>3.17</version>
          </dependency>
      
    • 创建工具类CSVUtils

      public class CSVUtils {
      
          //CSV文件分隔符
          private static final String NEW_LINE_SEPARATOR = "\n";
      
          //CSV文件头 可以不用写死
          private static final Object [] FILE_HEADER = {"天气","气温","降水","风速","数据更新时间","对象日期时间"};
      
          /**
           * 写CSV文件
           * @param fileName 文件名
           * @param weather  天气
           */
          public void writeCsvFile(String fileName, Weather weather){
              //获取文件夹名
              String dir = fileName.substring(0,11);
              File dirFile = new File(dir);
              //判断文件是否存在
              if(!dirFile.exists()) {
                  dirFile.mkdirs();
              }
              File file=new File(fileName);
              if(!file.exists()) {
                  try {
                      file.createNewFile();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
              FileWriter fileWriter = null;
              CSVPrinter csvFilePrinter = null;
      
              //创建 CSVFormat
              CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR);
              SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              Calendar calendar = Calendar.getInstance();
              try{
                  //初始化FileWriter
                  fileWriter = new FileWriter(fileName);
      
                  //初始化 CSVPrinter
                  csvFilePrinter = new CSVPrinter(fileWriter,csvFileFormat);
      
                   //创建CSV文件头
                  csvFilePrinter.printRecord(FILE_HEADER);
                  
                  //遍历写进CSV
                  List<String>  weatherDataRecord = new ArrayList<>();
                  weatherDataRecord.add(weather.getWeather());
                  weatherDataRecord.add(weather.getTemp());
                  weatherDataRecord.add(weather.getWater());
                  weatherDataRecord.add(weather.getWind());
                  weatherDataRecord.add(sdf.format(weather.getForcastDate()));
      
                  //设置整点时间
                  calendar.setTime(weather.getForcastDate());
                  calendar.set(Calendar.MINUTE, 0);
                  calendar.set(Calendar.SECOND, 0);
                  Date time = calendar.getTime();
                  weatherDataRecord.add(sdf.format(time));
      
                  csvFilePrinter.printRecord(weatherDataRecord);
              }catch (Exception e){
                  e.printStackTrace();
              }finally {
                  try{
                      fileWriter.flush();
                      fileWriter.close();
                      csvFilePrinter.close();
                  }catch (IOException e){
                      e.printStackTrace();
                  }
              }
          }
      
      }
      

    相关文章

      网友评论

        本文标题:采用commons-csv数据转CSV文件

        本文链接:https://www.haomeiwen.com/subject/hjpugqtx.html