스프레드시트 관리 작업

스프레드시트 관리 작업

스프레드시트 관리 작업

이 가이드는 Aspose.Cells FOSS for Java를 사용하여 Excel 워크북을 생성, 로드, 수정 및 저장하는 방법을 보여줍니다. 엔드-투-엔드 스프레드시트 관리를 위해 Workbook, WorksheetCollection, Worksheet, Cells, Cell 클래스를 사용하는 방법을 배울 수 있습니다.


새 워크북 만들기

인수 없이 호출하는 생성자를 사용하여 빈 워크북을 생성합니다. Sheet1라는 이름의 단일 빈 워크시트가 자동으로 추가됩니다.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
System.out.println("Sheet name: " + sheet.getName()); // Sheet1

파일에서 워크북 로드

Workbook(fileName) 생성자에 파일 경로를 전달하여 기존 .xlsx 또는 .ods 파일을 엽니다. 형식 감지나 비밀번호 처리를 제어해야 할 때는 Workbook(fileName, options)를 사용하여 LoadOptions를 제공합니다.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.LoadOptions;

// Simple load
Workbook workbook = new Workbook("data/report.xlsx");

// Load with explicit options
LoadOptions opts = new LoadOptions();
Workbook workbookWithOpts = new Workbook("data/report.xlsx", opts);

스트림에서 워크북 로드

Workbook(stream)Workbook(stream, options)은 모든 java.io.InputStream를 허용합니다. 이는 파일이 네트워크 리소스, 데이터베이스 BLOB 또는 메모리 내 바이트 배열에서 올 때 유용합니다.

import com.aspose.cells.foss.Workbook;
import java.io.FileInputStream;
import java.io.InputStream;

try (InputStream is = new FileInputStream("data/template.xlsx")) {
    Workbook workbook = new Workbook(is);
    System.out.println("Worksheets: " + workbook.getWorksheets().getCount());
}

워크시트 접근 및 관리

Workbook.getWorksheets()WorksheetCollection을 반환합니다. 인덱스 또는 이름으로 시트를 가져오고, 모든 시트를 순회하며, 필요에 따라 시트를 추가하거나 제거합니다.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();

// Access by index
Worksheet first = sheets.get(0);
System.out.println(first.getName()); // Sheet1

// Add a named sheet
int idx = sheets.add("Summary");
Worksheet summary = sheets.get(idx);
summary.setName("Summary");

// Iterate all sheets
for (Worksheet ws : sheets) {
    System.out.println("Sheet: " + ws.getName());
}

// Remove a sheet by name
sheets.removeAt("Sheet1");
System.out.println("Remaining sheets: " + sheets.getCount());

셀 값 읽기 및 쓰기

Worksheet.getCells()을 사용하여 셀로 이동하면 Cells 컬렉션이 반환됩니다. 이름(예: "A1")이나 0부터 시작하는 행/열 인덱스로 Cell를 가져옵니다. 기본값을 쓰려면 putValue()를 사용하고, 읽어오려면 getValue() / getStringValue()를 사용합니다.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Worksheet;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
Cells cells = sheet.getCells();

// Write values
cells.get("A1").putValue("Product");
cells.get("B1").putValue("Units Sold");

// Write by row/column index (0-based)
Cell a2 = cells.get(1, 0);
a2.putValue("Widget A");

Cell b2 = cells.get(1, 1);
b2.putValue(1200);

// Read back
System.out.println(a2.getStringValue()); // Widget A
System.out.println(b2.getValue());       // 1200

셀 수식 설정

setFormula()을 통해 셀에 수식 문자열을 할당합니다. Aspose.Cells은 워크북이 저장될 때 또는 계산이 명시적으로 트리거될 때 수식을 평가합니다.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Cells cells = sheets.get(0).getCells();

cells.get("A1").putValue(100);
cells.get("A2").putValue(200);

Cell a3 = cells.get("A3");
a3.setFormula("=SUM(A1:A2)");
System.out.println("Formula: " + a3.getFormula()); // =SUM(A1:A2)

워크북 저장

Workbook.save(fileName)을 사용하여 워크북을 디스크에 씁니다. 출력 형식은 파일 확장자에 따라 결정되며, Excel 워크북의 경우 .xlsx을 사용합니다.

import com.aspose.cells.foss.Workbook;

Workbook workbook = new Workbook();
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello");

// Save to file -- format inferred from .xlsx extension
workbook.save("output/result.xlsx");

리소스 해제

WorkbookAutoCloseable을 구현합니다. try-with-resources 블록을 사용하여 워크북의 내부 리소스가 사용 후 즉시 해제되도록 합니다.

import com.aspose.cells.foss.Workbook;

try (Workbook workbook = new Workbook("data/large.xlsx")) {
    workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automatically

팁 및 모범 사례

  • 대용량 파일의 경우 파일 핸들을 열어 두는 것을 방지하기 위해 항상 try-with-resources (try (Workbook wb = new Workbook(...)))를 사용하세요.
  • 핫 루프에서는 cells.get(row, column)cells.get(cellName)보다 선호합니다; 정수 오버로드는 셀 이름 파싱을 반복하는 것을 방지합니다.
  • 시트에 인덱스로 접근하기 전에 workbook.getWorksheets().getCount()을 호출하여 IndexOutOfBoundsException을 방지하세요.
  • 시트를 add() 후에 setName()으로 명시적으로 이름 지정하면, 하위 코드가 불안정한 인덱스가 아니라 이름으로 시트를 찾을 수 있습니다.
  • setFormula() 직후에 바로 수식 결과에 의존하지 마세요; 먼저 저장하거나 같은 세션에서 계산된 값이 필요하면 다시 로드하세요.

일반적인 문제

문제원인해결 방법
WorkbookLoadException new Workbook(fileName)에서파일 경로가 올바르지 않거나 파일이 잠겨 있음경로가 존재하고 읽을 수 있는지 확인하십시오; 파일을 보유하고 있는 다른 애플리케이션을 닫으십시오
get(index)IndexOutOfBoundsException를 발생시킴시트 인덱스가 getCount() - 1를 초과함액세스하기 전에 sheets.getCount()을 확인하고; 새 시트를 만들려면 add()을 사용하십시오
수식 셀이 빈 getValue()을 반환합니다수식이 메모리 내에서 자동으로 계산되지 않습니다워크북을 저장하고 다시 로드하여 수식 결과를 얻으십시오
save() 이후에 출력 파일이 손상되었습니다잘못된 파일 확장자파일 이름이 .xlsx으로 끝나는지 확인하십시오; 형식은 확장자에서 추론됩니다

FAQ

워크시트의 이름을 어떻게 바꾸나요?

인덱스로 WorksheetCollection에서 Worksheet 객체를 가져온 다음, 새 표시 이름을 사용하여 setName(name)를 호출합니다:

workbook.getWorksheets().get(0).setName("Sales Data");

워크북에 시트가 몇 개 있는지 어떻게 확인하나요?

Workbook.getWorksheets()가 반환한 WorksheetCollection에 대해 getCount()를 호출하여 워크시트 총 수를 가져옵니다:

int count = workbook.getWorksheets().getCount();

한 번의 호출로 여러 시트를 추가할 수 있나요?

번호. 시트당 worksheets.add(sheetName)를 한 번 호출합니다. 각 호출은 새로 생성된 시트의 인덱스를 반환합니다.

셀 값의 유형을 어떻게 확인합니까?

이름으로 Cell를 검색하고 getType()를 호출하십시오. 이 호출은 CellValueType 열거형 값을 반환합니다:

Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum value

API Reference 요약

클래스 / 메서드설명
Workbook()빈 워크북을 하나의 빈 시트와 함께 생성합니다
Workbook(fileName)파일 경로에서 워크북을 로드합니다
Workbook(stream)InputStream에서 워크북을 로드합니다
Workbook(fileName, options)LoadOptions와 함께 워크북을 로드합니다
Workbook.getWorksheets()반환합니다 WorksheetCollection
Workbook.save(fileName)파일에 저장합니다 (확장자에서 형식을 추론)
Workbook.save(stream, format)명시적인 SaveFormat와 함께 스트림에 저장합니다
WorksheetCollection.get(index)0 기반 인덱스로 시트를 반환합니다
WorksheetCollection.get(name)이름으로 시트 반환
WorksheetCollection.add(sheetName)이름이 지정된 시트를 추가하고 인덱스를 반환
WorksheetCollection.getCount()워크북의 시트 수
WorksheetCollection.removeAt(sheetName)이름으로 시트 제거
Worksheet.getCells()이 시트에 대한 Cells 컬렉션을 반환합니다
Worksheet.getName() / setName()시트 탭 이름을 가져오거나 설정합니다
Cells.get(cellName)이름으로 Cell를 반환합니다 (예: “A1”)
Cells.get(row, column)0 기반 행/열로 Cell를 반환합니다
Cell.putValue(value)셀에 값을 씁니다
Cell.getValue()셀 값을 Object 로 읽습니다
Cell.getStringValue()셀 값을 하나의 String 로 읽습니다
Cell.setFormula(formula)수식 문자열을 설정합니다 (예: “=SUM(A1:A2)”)
LoadOptions워크북 로딩 구성
SaveFormat형식 상수의 열거형 (형식은 파일 확장자를 통해 추론되며; save()에 전달되지 않음)

참조

 한국어