본문 바로가기
Language/Java

[Java] csv 파일을 ,(콤마)기준으로 자른 내역을 새로 엑셀 파일로 생성하기

by 챠챠12 2024. 5. 26.
반응형

 

[상황]

가계부 작성한 내역들을 csv 파일로 내려받아,

복붙을 쉽게 하기 위해서 새로운 excel 파일로 생성하는 Java 로직 구현을 만들어보았습니다.

(java 로직 코드는 ChatGPT를 통해 예시를 전달받아 수정진행했습니다.)

 

1. jar 다운로드

Apache POI 라이브러리 다운로드 필요

[excel 파일로 생성하기 위한 jar] 
poi-5.2.4.jar
poi-ooxml-5.2.4.jar
poi-ooxml-schemas-5.2.4.jar
xmlbeans-5.0.3.jar
commons-collections4-4.4.jar
commons-compress-1.21.jar
commons-math3-3.6.1.jar
log4j-api-2.14.1.jar
log4j-core-2.14.1.jar
JAR 파일 다운로드 링크
https://poi.apache.org/download.html

 

Apache POI - Download Release Artifacts

<!--+ |breadtrail +--> <!--+ |start Menu, mainarea +--> <!--+ |start Menu +--> <!--+ |end Menu +--> <!--+ |start content +--> Apache POI - Download Release Artifacts Available Downloads This page provides instructions on how to download and verify the Apac

poi.apache.org

 

1번 실행하다가 오류 발생 시

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject 발생 시

 

아래 URL 참고

https://oh-rot-ha-da.tistory.com/manage/newpost/265?type=post&returnURL=https%3A%2F%2Foh-rot-ha-da.tistory.com%2F265

 

 

 

[ 예제 소스 코드]

: 변환할 csv 파일 경로에 넣고, xlsx 변환된 파일 넣을 경로만 넣고서 실행하시면됩니다.

: java 실행 시 아래와 같이 output_년월일_시분초 로 xlsx파일 생성되어 보여집니다.

package test;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TextToExcel {
	 public static void main(String[] args) {
		 	
	        String csvFile = ""; // 변환할 CSV 파일 경로
	        String excelFile = ""; // 생성할 엑셀 파일
	       
	        //현재 날짜와 시간을 사용하여 파일명 생성
	        LocalDateTime now = LocalDateTime.now();
	        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss");
	        String formattedDate = now.format(formatter);
	        excelFile = "output_" + formattedDate + ".xlsx"; // 생성할 엑셀 파일 경로     
	        
	        try (Workbook workbook = new XSSFWorkbook()) {
	            Sheet sheet = workbook.createSheet("Data");

	            try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csvFile), "UTF-8"))) {
	                String line;
	                int rowNum = 0;
	                while ((line = br.readLine()) != null) {
	                    Row row = sheet.createRow(rowNum++);
	                    String[] data = line.split(","); // 콤마로 데이터 분리
	                    for (int i = 0; i < data.length; i++) {
	                        Cell cell = row.createCell(i);
	                        cell.setCellValue(data[i]);
	                    }
	                }
	            }

	            // 엑셀 파일로 저장
	            try (FileOutputStream fileOut = new FileOutputStream(excelFile)) {
	                workbook.write(fileOut);
	                System.out.println("엑셀 파일이 생성되었습니다.");
	            }

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

 

 

반응형

댓글