업데이트:

카테고리:

/

태그: , ,

  1. csv 파일을 읽는데 필요한 라이브러리

     implementation "com.opencsv:opencsv:4.4"
    
  2. csv 파일 읽기

     val reader = Files.newBufferedReader(Paths.get("app/src/main/res/input-file/order_separator_${country}.csv"), Charsets.UTF_8)
        
     val parser = CSVParserBuilder()
         .withSeparator(Char(124))
         .withQuoteChar(CSVParser.DEFAULT_QUOTE_CHARACTER)
         .withEscapeChar(CSVParser.DEFAULT_ESCAPE_CHARACTER)
         .build()
        
     val csvReader = CSVReaderBuilder(reader)
         .withCSVParser(parser)
         .build()
        
     val recodes = csvReader.readAll()
     val newRecode = mutableListOf<Array<String>>()
        
     for (recode in recodes) {
         if (recode[3] != "주문번호정보1") {
             recode[3] = "${recode[3]}${inputNumber}"
         }
         newRecode.add(recode)
     }
    
    • Files.newBufferedReader() : 파일의 경로를 지정
    • CSVParserBuilder() : 파싱할 옵션 설정
      • Separator : csv파일의 구분자 설정

        기본은 , 으로 설정되어 있지만, csv 파일 내부 데이터에 , 가 포함된 데이터가 많아 | 로 설정

        • 맥에서의 구분자 변경

          맥에서는 csv 저장시 구분자 변경을 따로 할 수 가 없어, 윈도우에서 구분자를 변경 후 넘겨받음

      • QuoteChar : 따옴표 허용 여부?

        구분자가 포함되어 있는 데이터의 경우 " 를 사용하여 하나의 데이터로 묶어줄 수 있다.

      • EsacpeChar : recode 구분자?

     val writer = Files.newBufferedWriter(Paths.get("app/src/main/res/output-file/order_${country}_${inputNumber}.csv"), Charset.forName("UTF-8"))
        
     val csvWriter = CSVWriterBuilder(writer)
         .withSeparator(CSVWriter.DEFAULT_SEPARATOR)
         .withQuoteChar(CSVWriter.DEFAULT_QUOTE_CHARACTER)
         .withEscapeChar(CSVWriter.DEFAULT_ESCAPE_CHARACTER)
         .withLineEnd(CSVWriter.DEFAULT_LINE_END)
         .build()
        
     csvWriter.writeAll(newRecode)
        
     for (i in newRecode[2]) {
         print("${i}, ")
     }
     println()
        
     print("파일 생성 : order_${country}_${inputNumber}\n")
        
     csvWriter.close()
     writer.close()
    
    • File.newBufferedWriter() : csv을 저장할 파일 위치 및 이름 작성
    • csvWriterBiluder() : csv를 저장할 규칙 지정
    • write : 데이터 작성
    • csvWriter.close() : 파일 저장

    저장된 파일은 텍스터 에디터나 Numbers에서는 정상적으로 출력되나, excel을 통해서 열면 한글이 깨지는 현상 존재

    그래서 데이터 가져오기를 통해서 저장된 csv파일을 불러와야 한글이 깨지지 않음