Java로 CSV를 Excel(XLSX/XLS)로 변환하기: 스타일링 가이드

Pilalo Jovanitho·2026년 8월 14일

CSV(Comma-Separated Values) 파일은 데이터 교환에 널리 사용되는 간단한 형식이지만, 데이터 자체만 포함할 뿐 서식이나 구조적 표현을 갖추지 못합니다. 반면 Excel 파일은 데이터를 시각적으로 표현하고, 스타일링을 통해 가독성을 높이며, 추가적인 데이터 처리를 가능하게 합니다. 이 글에서는 Java용 Spire.XLS for Java 라이브러리를 사용하여 CSV 파일을 Excel로 변환하고, 여기에 다양한 서식까지 적용하는 방법을 단계별로 살펴보겠습니다.

1. 라이브러리 설정

프로젝트에서 Spire.XLS for Java를 사용하려면 먼저 의존성을 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 리포지토리와 의존성을 포함시킵니다 .

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>16.7.3</version>
    </dependency>
</dependencies>

Maven을 사용하지 않는다면, JAR 파일을 직접 내려받아 프로젝트의 클래스패스에 추가할 수도 있습니다.

2. CSV 파일을 Excel로 기본 변환하기

가장 기본적인 변환 과정은 Workbook 객체를 통해 매우 간단하게 처리됩니다. loadFromFile() 메서드로 CSV 파일을 읽고, saveToFile() 메서드로 Excel 파일을 저장하면 됩니다 .

예제 코드:

import com.spire.xls.*;

public class CsvToXlsx {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        // CSV 파일 로드 (구분자 지정)
        workbook.loadFromFile("data.csv", ",");
        // Excel XLSX 파일로 저장
        workbook.saveToFile("output.xlsx", ExcelVersion.Version2013);
    }
}

ExcelVersion.Version97to2003을 사용하면 .xls 형식으로 저장할 수 있습니다. 또한, loadFromFile("data.csv", ",", 3, 2)와 같이 시작 행과 열을 지정하여 데이터 삽입 위치를 제어할 수도 있습니다 .

3. Excel 출력물에 서식 적용하기

보고서나 고객에게 제공할 데이터라면, 단순 변환보다 서식을 적용하여 가독성을 높이는 것이 중요합니다. 이 라이브러리는 CellStyle 클래스를 통해 글꼴, 색상, 숫자 형식 등을 지정하고, 열 너비를 자동으로 조정하는 기능을 제공합니다 .

서식 적용 예제 코드:

import com.spire.xls.*;

public class FormatCsvToExcel {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        workbook.loadFromFile("data.csv", ",");

        Worksheet sheet = workbook.getWorksheets().get(0);

        // 1. 헤더 행 스타일 설정
        CellStyle headerStyle = workbook.getStyles().addStyle("Header");
        headerStyle.getFont().setBold(true);
        headerStyle.setKnownColor(ExcelColors.LightYellow);
        for (int col = 1; col <= sheet.getLastColumn(); col++) {
            sheet.getCellRange(1, col).setStyle(headerStyle);
        }

        // 2. 숫자 열에 형식 적용 (예: 소수점 두 자리)
        CellStyle numStyle = workbook.getStyles().addStyle("Numbers");
        numStyle.setNumberFormat("#,##0.00");
        sheet.getCellRange("B2:B100").setStyle(numStyle);

        // 3. 모든 열의 너비를 내용에 맞게 자동 조정
        for (int i = 1; i <= sheet.getLastColumn(); i++) {
            sheet.autoFitColumn(i);
        }

        workbook.saveToFile("formatted_output.xlsx", ExcelVersion.Version2013);
    }
}

4. 다른 접근 방식과의 비교

Java에서 CSV를 Excel로 변환하는 방법은 다양하며, 각각 장단점이 있습니다.

  • Apache POI: 대표적인 오픈소스 라이브러리이지만, 이 글에서 소개한 방식과 달리 CSV를 직접 로드하는 기능이 없어 수동으로 CSV를 파싱하고, 각 셀을 순회하며 데이터를 입력하고 스타일을 적용하는 등 더 많은 코드가 필요할 수 있습니다 .
  • EasyExcel: Alibaba에서 개발한 라이브러리로, 메모리 효율적인 스트리밍 방식으로 대용량 Excel 파일을 처리하는 데 강점이 있습니다 .
  • Aspose.Cells: 또 다른 상용 라이브러리로, CSV 변환 및 다양한 서식 설정을 지원합니다 .
  • Sheetz: 어노테이션 기반의 간결한 API를 제공하는 오픈소스 라이브러리로, 한 줄의 코드로 읽기/쓰기가 가능하며 SAX 스트리밍을 지원합니다 .

도구 선택 시에는 프로젝트의 라이선스 정책, 필요한 기능의 복잡도, 성능 요구사항(특히 대용량 파일 처리) 등을 종합적으로 고려해야 합니다.

결론

이 글에서는 Java용 Spire.XLS for Java 라이브러리를 사용하여 CSV 파일을 Excel 형식으로 변환하고, 헤더 스타일, 숫자 형식, 열 너비 자동 조정 등의 서식을 적용하는 방법을 코드 예제와 함께 살펴보았습니다. loadFromFile()과 saveToFile() 메서드로 기본 변환을 간단히 처리하고, CellStyle 객체를 활용하면 가독성 있는 결과물을 생성할 수 있습니다. 다만 이 라이브러리는 상용 제품이므로 라이선스 정책과 무료 버전의 제약 사항을 프로젝트 환경에 맞게 검토해야 합니다.

0개의 댓글