Java를 사용한 Excel 문서 읽기 및 쓰기
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 작업을 손쉽게 구현할 수 있습니다. 이 글이 여러분이 빠르게 시작하는 데 도움이 되길 바라며, 실제 애플리케이션에서 그 잠재력을 발견하시길 기대합니다.