Java를 사용한 Excel 문서 읽기 및 쓰기

발행: (2025년 12월 30일 오후 02:55 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

소개

현대 소프트웨어 개발에서는 Excel 문서를 관리하고 조작하는 것이 일반적인 요구 사항입니다. 데이터 분석, 보고서 생성, 혹은 관리 정보 시스템 등에서 Excel은 중요한 역할을 합니다. 이 기사에서는 Spire.XLS for Java 라이브러리를 사용하여 Excel 문서를 손쉽게 읽고 쓰는 방법을 소개합니다.

Spire.XLS는 효율적인 생성, 편집, 읽기 및 변환을 지원하는 강력한 Java Excel 컴포넌트입니다. .xlsx.xls 형식을 모두 손쉽게 처리하며, 포괄적인 API, 빠른 성능, 그리고 훌륭한 문서를 제공하여 개발자가 스프레드시트를 보다 효율적으로 작업할 수 있도록 돕습니다.

Maven 의존성

프로젝트에서 Maven을 사용한다면, pom.xml에 다음을 추가하십시오:

<dependency>
    <groupId>com.e-iceblue</groupId>
    <artifactId>e-iceblue</artifactId>
    <version>https://repo.e-iceblue.com/nexus/content/groups/public/</version>
</dependency>

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls</artifactId>
    <version>15.12.15</version>
</dependency>

Maven은 필요한 라이브러리 파일을 자동으로 다운로드하고 포함합니다.

Excel 파일에서 데이터 읽기

다음 예제는 기존 Excel 파일을 로드하고 그 내용을 출력하는 방법을 보여줍니다.

import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ReadData {

    public static void main(String[] args) {

        // Workbook 객체 생성
        Workbook wb = new Workbook();

        // 기존 Excel 파일 로드
        wb.loadFromFile("C:/Users/Administrator/Desktop/NewSpreadsheet.xlsx");

        // 첫 번째 워크시트 가져오기
        Worksheet sheet = wb.getWorksheets().get(0);

        // 데이터가 있는 셀 범위 가져오기
        CellRange locatedRange = sheet.getAllocatedRange();

        // 행 순회
        for (int i = 0; i < locatedRange.getRows().length; i++) {

            // 열 순회
            for (int j = 0; j < locatedRange.getColumnCount(); j++) {

                // 특정 셀의 데이터 가져오기
                System.out.print(locatedRange.get(i + 1, j + 1).getValue() + "  ");
            }
            System.out.println();
        }
    }
}

설명

단계설명
Workbook 객체Excel 파일을 로드하기 위해 Workbook 객체를 생성합니다.
파일 로드loadFromFile 메서드를 사용해 기존 워크북을 엽니다.
워크시트 가져오기getWorksheets().get(0) 로 첫 번째 워크시트를 가져옵니다.
데이터 순회중첩 루프를 사용해 각 행과 열을 순회하면서 값을 출력합니다.

새 Excel 파일 만들기

다음 예제는 새 워크북을 만들고 기본 워크시트 정보를 설정하며 데이터를 쓰는 방법을 보여줍니다.

import com.spire.xls.*;

public class CreateSpreadsheet {

    public static void main(String[] args) {

        // Create a Workbook object
        Workbook wb = new Workbook();

        // Remove the default worksheet
        wb.getWorksheets().clear();

        // Add a worksheet named "Employees"
        Worksheet sheet = wb.getWorksheets().add("Employees");

        // Merge cells from A1 to G1
        sheet.getRange().get("A1:G1").merge();

        // Write data to A1 and apply formatting
        sheet.getRange().get("A1").setValue("Basic Information of Huayu Auto Company Employees");
        sheet.getRange().get("A1").setHorizontalAlignment(HorizontalAlignType.Center);
        sheet.getRange().get("A1").setVerticalAlignment(VerticalAlignType.Center);
        sheet.getRange().get("A1").getStyle().getFont().isBold(true);
        sheet.getRange().get("A1").getStyle().getFont().setSize(13);

        // Set the height of the first row
        sheet.setRowHeight(1, 30);

        // Create a two‑dimensional array with sample data
        String[][] twoDimensionalArray = new String[][]{
                {"Name", "Gender", "Birth Date", "Education", "Phone Number", "Position", "ID"},
                {"Allen", "Male", "1990-02-10", "Bachelor", "24756854", "Mechanic", "0021"},
                {"Patrick", "Male", "1985-06-08", "Master", "59863247", "Mechanic", "0022"},
                {"Jenna", "Female", "1989-11-25", "Bachelor", "79540352", "Sales", "0023"},
                {"Tommy", "Male", "1988-04-16", "Master", "52014060", "Mechanic", "0024"},
                {"Christina", "Female", "1998-01-21", "Bachelor", "35401489", "HR", "0025"}
        };

        // Import data from the array into the worksheet (starting at row 2, column 1)
        sheet.insertArray(twoDimensionalArray, 2, 1);

        // Set the row height for a range
        sheet.getRange().get("A2:G7").setRowHeight(15);

        // Set column widths
        sheet.setColumnWidth(2, 15);
        sheet.setColumnWidth(3, 21);
        sheet.setColumnWidth(4, 15);

        // Set border styles
        sheet.getRange().get("A2:G7").borderAround(LineStyleType.Medium);
        sheet.getRange().get("A2:G7").borderInside(LineStyleType.Thin);
        sheet.getRange().get("A2:G2").borderAround(LineStyleType.Medium);
        sheet.getRange().get("A2:G7").getBorders().setKnownColor(ExcelColors.Black);

        // Save as a .xlsx file
        wb.saveToFile("output/NewSpreadsheet.xlsx", FileFormat.Version2016);
    }
}

설명

단계설명
Workbook 객체Workbook 인스턴스를 생성합니다.
기본 워크시트 제거clear() 메서드로 자동으로 생성된 워크시트를 삭제합니다.
워크시트 추가Employees 라는 이름의 워크시트를 추가합니다.
셀 병합A1:G1 셀을 병합하여 제목 영역을 만듭니다.
데이터 및 서식 쓰기제목 텍스트를 설정하고, 가로·세로 중앙 정렬을 적용하며, 굵게 표시하고, 글꼴 크기를 13으로 지정합니다.
배열 데이터 삽입2행 1열부터 시작하여 2차원 String 배열의 데이터를 시트에 채웁니다.
테두리 및 서식 설정행 높이와 열 너비를 조정하고, 테두리 스타일 및 색상을 적용합니다.
파일 저장워크북을 Excel 2016 형식으로 output/NewSpreadsheet.xlsx에 저장합니다.

결론

Spire.XLS for Java 라이브러리를 사용하면 기존 데이터를 읽든 프로그래밍 방식으로 새 스프레드시트를 생성하든 Excel 문서를 편리하게 작업할 수 있습니다. 이 라이브러리의 풍부한 API와 직관적인 구문은 Java 기반 Excel 조작에 탁월한 선택이 됩니다.

결론

새로운 스프레드시트, Spire.XLS는 큰 편리함을 제공합니다. 사용하기 쉬운 API와 풍부한 기능 덕분에 Java 개발자들이 다양한 Excel 작업을 손쉽게 구현할 수 있습니다. 이 글이 여러분이 빠르게 시작하는 데 도움이 되길 바라며, 실제 애플리케이션에서 그 잠재력을 발견하시길 기대합니다.

Back to Blog

관련 글

더 보기 »

C#에서 간단한 코드로 Excel 읽기

소개 일상적인 C 개발에서 Excel 데이터를 처리하는 것은 거의 모든 개발자가 마주하는 요구 사항입니다. 사용자 데이터를 가져오든, 보고서를 생성하든...