πŸ’» Java Study/Practice

[Java]CSV 파일 생성 클래슀 μ˜ˆμ‹œ

jhj.sharon 2024. 6. 4. 14:06
λ°˜μ‘ν˜•

| writeListToCSVFile λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ νŒŒμΌμ„ 생성

- ν•΄λ‹Ή ν΄λž˜μŠ€λŠ” 제λͺ©ν–‰(header row)와 λ‚΄μš©ν–‰(data row)λ₯Ό 각각 λΆ„λ¦¬ν•˜μ—¬ μƒμ„±ν•œλ‹€.

- fileName : 경둜λ₯Ό ν¬ν•¨ν•œ νŒŒμΌμ΄λ¦„(ex. /portal/upload/DATA_202305240323420290)

- headerlist : 제λͺ©ν–‰

- dataList : λ‚΄μš©ν–‰

- dataList μžμ²΄λŠ” 컬럼과 λ°μ΄ν„°λ‘œ 짝지어 μžˆμ§€λ§Œ μ‹€μ œ 파일 생성은 λ°μ΄ν„°λ§Œμ„ μ‚¬μš©ν•œλ‹€. 즉 제λͺ©ν–‰μ€ λΉ¨κ°•,  νŒŒλž‘, λ…Έλž‘μ΄κ³  데이터 1, 데이터2, 데이터3이 μŒ“μΈλ‹€.

List<String> headers = Arrays.asList("λΉ¨κ°•", "νŒŒλž‘", "λ…Έλž‘");
List<Map<String, String>> data = new ArrayList<>();
Map<String, String> row1 = new HashMap<>();
row1.put("컬럼1", "데이터1");
row1.put("컬럼2", "데이터2");
row1.put("컬럼3", "데이터3");
data.add(row1);

DataCSVUtil.writeListToCSVFile("output.csv", headers, data);​
package chungnam.jobutil;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List;
import java.util.Map;

public class DataCSVUtil {

    public static void writeListToCSVFile(String fileName, List<String> headerList, List<Map<String, String>> dataList) {
        Writer writer = null;

        try {
            writer = new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8");

            // Write BOM for UTF-8
            writer.write('\uFEFF');

            // Header row
            for (int i = 0; i < headerList.size(); i++) {
                writer.append(escapeSpecialCharacters(headerList.get(i)));
                if (i < headerList.size() - 1) {
                    writer.append(",");
                }
            }
            writer.append("\n");

            // Write the data rows
            for (Map<String, String> data : dataList) {
                int cellIndex = 0;
                for (String key : data.keySet()) {
                    String value = (String) data.values().toArray()[cellIndex++];
                    writer.append(escapeSpecialCharacters(value != null ? value : ""));
                    if (cellIndex < data.size()) {
                        writer.append(",");
                    }
                }
                writer.append("\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    writer.flush();
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static String escapeSpecialCharacters(String data) {
        if (data == null) {
            return "";
        }
        String escapedData = data.replace("\"", "\"\"");
        if (data.contains(",") || data.contains("\n") || data.contains("\"")) {
            escapedData = "\"" + escapedData + "\"";
        }
        return escapedData;
    }
}

 

 

λ°˜μ‘ν˜•