π» 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;
}
}
λ°μν