Java로 Excel 파일 형식 간 변환하기: XLS와 XLSX

Pilalo Jovanitho·2026년 8월 6일

Microsoft Excel의 파일 형식은 크게 두 가지로 나눌 수 있습니다. 하나는 Excel 97-2003에서 사용된 이진 파일 형식인 .xls이고, 다른 하나는 Excel 2007부터 도입된 Office Open XML 기반의 .xlsx입니다. .xlsx 형식은 압축된 XML 구조를 사용하여 파일 크기가 작고, 데이터 복구가 용이하며 호환성이 뛰어난 장점이 있습니다.

이 글에서는 Java용 Spire.XLS 라이브러리를 활용하여 .xls 파일을 .xlsx로, 또는 그 반대로 변환하는 간단한 방법을 코드 예제와 함께 소개합니다. 이 라이브러리는 두 형식을 모두 지원하며, Microsoft Excel이 설치되지 않은 환경에서도 동작합니다.

1. 라이브러리 설치

프로젝트에서 사용할 라이브러리를 의존성에 추가합니다. 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. XLS를 XLSX로 변환하기

Workbook 클래스를 사용하여 구형 .xls 파일을 새 형식인 .xlsx로 저장할 수 있습니다.

주요 단계:
1. Workbook 객체를 생성합니다.
2. loadFromFile() 메서드로 변환할 .xls 파일을 로드합니다.
3. saveToFile() 메서드를 호출하여 .xlsx 형식으로 저장합니다. 이때 저장할 Excel 버전을 ExcelVersion 열거형으로 지정합니다.

예제 코드:

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;

public class ConvertXlsToXlsx {
    public static void main(String[] args) {
        // Workbook 인스턴스 생성
        Workbook workbook = new Workbook();
        // XLS 파일 로드
        workbook.loadFromFile("Input.xls");

        // XLSX 형식으로 저장
        workbook.saveToFile("ToXlsx.xlsx", ExcelVersion.Version2016);
    }
}

3. XLSX를 XLS로 변환하기

반대로 최신 .xlsx 파일을 구형 .xls 형식으로 변환하는 과정도 동일합니다. 호환성이 중요한 환경에서 유용하게 사용할 수 있습니다.

주요 단계:
1. Workbook 객체를 생성합니다.
2. loadFromFile() 메서드로 변환할 .xlsx 파일을 로드합니다.
3. saveToFile() 메서드를 호출하여 .xls 형식으로 저장합니다. 이때 ExcelVersion.Version97to2003을 지정합니다.

예제 코드:

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;

public class ConvertXlsxToXls {
    public static void main(String[] args) {
        // Workbook 인스턴스 생성
        Workbook workbook = new Workbook();
        // XLSX 파일 로드
        workbook.loadFromFile("Input.xlsx");

        // XLS 형식으로 저장 (Excel 97-2003)
        workbook.saveToFile("ToXls.xls", ExcelVersion.Version97to2003);
    }
}

4. 변환 시 유의사항

  • 데이터 호환성: XLSX 형식이 지원하는 일부 기능(예: 65,536행 이상의 데이터, 조건부 서식, 고급 차트 등)은 XLS 형식에서 지원되지 않을 수 있습니다. 따라서 XLSX에서 XLS로 변환할 때는 데이터나 서식이 손실될 가능성을 고려해야 합니다.
  • 파일 크기: 일반적으로 XLSX 형식이 XLS에 비해 압축 효율이 좋아 파일 크기가 더 작습니다. 변환 시 이러한 특성을 고려하여 형식을 선택하는 것이 좋습니다.

5. 다른 라이브러리와의 비교

Java에서 Excel 파일을 처리하는 방법은 이 라이브러리 외에도 다양합니다.

  • Apache POI: 대표적인 오픈소스 라이브러리로 HSSF(XLS), XSSF(XLSX)를 모두 지원합니다. 방대한 사용자층과 풍부한 문서, 무료라는 장점이 있지만, 대용량 파일 처리 시 메모리 사용량이 높을 수 있다는 의견이 있습니다.
  • JExcelAPI: XLS 형식에 특화된 오픈소스 라이브러리이지만, XLSX 형식은 공식적으로 지원하지 않아 최신 Excel 파일 처리에는 제한이 있습니다.

도구 선택 시에는 프로젝트의 라이선스 정책, 처리해야 할 파일의 크기 및 복잡도, 필요한 기능의 범위, 개발 및 유지보수 비용 등을 종합적으로 고려해야 합니다.

결론

이 글에서는 Java용 Spire.XLS 라이브러리를 활용하여 Excel의 두 가지 주요 파일 형식인 .xls와 .xlsx 간의 상호 변환을 수행하는 기본적인 방법을 코드 예제와 함께 살펴보았습니다. Workbook 객체의 loadFromFile()과 saveToFile() 메서드만으로 비교적 간단하게 변환을 처리할 수 있어, 다양한 Excel 버전 간의 데이터 교환 및 호환성 확보가 필요한 애플리케이션에서 유용하게 사용될 수 있습니다. 다만 이 라이브러리는 상용 제품이므로 무료 버전의 제약 사항이나 라이선스 비용을 프로젝트 상황에 맞게 검토해야 하며, Apache POI와 같은 오픈소스 대안과의 비교를 통해 가장 적합한 도구를 선택할 것을 권장합니다. 또한 XLSX에서 XLS로의 변환 시에는 형식 간 기능 차이로 인한 데이터 손실 가능성을 항상 염두에 두어야 합니다.

0개의 댓글