C++에서 스프레드시트를 로드하는 방법

C++에서 스프레드시트를 로드하는 방법

Aspose.Cells FOSS for C++는 Microsoft Excel 없이 기존 XLSX 스프레드시트를 로드하고 읽을 수 있게 해줍니다. 이 가이드는 워크북을 로드하고, 워크시트에 접근하며, Workbook, Worksheet, Cell 클래스를 사용하여 셀 값을 읽는 방법을 단계별로 안내합니다.

단계별 가이드

단계 1: 빌드 설정

CMake 프로젝트에 Aspose.Cells FOSS for C++를 추가하세요:

cmake_minimum_required(VERSION 3.15)
project(LoadSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)

add_executable(LoadSpreadsheet main.cpp)
target_link_libraries(LoadSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)

단계 2: 필요한 헤더 포함

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/WorksheetCollection.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"

using namespace Aspose::Cells_FOSS;

단계 3: 워크북 로드

기존 XLSX 파일을 로드하려면 Workbook 생성자에 파일 경로를 전달하세요:

int main() {
    Workbook workbook("input.xlsx");
    // workbook is now loaded and ready to use
    return 0;
}

단계 4: 워크시트에 접근하기

Workbook::GetWorksheets()를 사용하여 워크시트 컬렉션을 가져온 다음 인덱스로 접근하세요:

Worksheet& sheet = workbook.GetWorksheets()[0];
std::string name = sheet.GetName();

단계 5: 셀 값 읽기

주소 문자열로 셀에 접근하고 값을 읽으세요:

std::string text = sheet.GetCells()["A1"].GetStringValue();
double number = sheet.GetCells()["B2"].GetValue().AsDouble();
bool flag = sheet.GetCells()["C3"].GetValue().AsBool();

단계 6: 변경 사항 저장하기

수정이 끝난 후 파일에 다시 저장하세요:

workbook.Save("output.xlsx");
workbook.Dispose();

일반적인 문제 및 해결 방법

파일을 찾을 수 없음 오류가 발생했습니다 파일 경로가 올바르고 파일이 존재하는지 확인하십시오. 작업 디렉터리가 불확실할 경우 절대 경로를 사용하세요.

숫자 셀에 대해 빈 문자열이 반환됩니다 사용 GetValue().AsDouble() 대신 GetStringValue() — GetStringValue() 텍스트가 아닌 숫자를 포함하는 셀에 대해 빈 문자열을 반환합니다.

워크북은 로드되지만 셀이 비어 있는 것처럼 보입니다 XLSX 파일이 암호로 보호되지 않았는지 확인하십시오. Aspose.Cells FOSS for C++는 암호화된 파일을 지원하지 않습니다.

수식 셀에서 예상치 못한 값이 반환됩니다 수식 셀은 계산된 값이 아니라 수식 문자열을 저장합니다. 수식은 파일이 열릴 때 Excel에 의해 평가됩니다. 사용 GetFormula() 수식 텍스트를 검색하려면.

처리 후 메모리가 해제되지 않음 Call workbook.Dispose() 모든 작업이 완료된 후에 관리되지 않는 리소스를 해제합니다.

자주 묻는 질문

단일 파일에서 여러 워크시트를 로드할 수 있나요?

예. Workbook::GetWorksheets()를 사용하여 모든 시트에 접근하고 인덱스로 반복합니다. sheet.GetName()를 호출하여 각 시트를 이름으로 식별합니다.

여러 시트를 포함한 XLSX 파일을 로드하고 특정 시트에서 읽을 수 있나요?

예. 0부터 시작하는 인덱스로 시트에 접근합니다: workbook.GetWorksheets()[1]는 두 번째 시트를 반환합니다.

파일을 로드하면 수식 재계산이 트리거되나요?

아니요. 라이브러리는 XLSX 파일에 저장된 셀 값과 수식 문자열을 그대로 로드합니다. 수식 재계산은 파일을 열 때 Excel 또는 호환 가능한 리더에서 수행됩니다.

파일 경로에 유니코드 문자가 포함되어 있으면 어떻게 되나요?

std::string로 경로를 전달하고 플랫폼에 맞는 올바른 인코딩을 사용하십시오. UTF-8 경로는 Linux와 macOS에서 지원됩니다. Windows에서는 경로 인코딩이 시스템 로케일과 일치하도록 확인하십시오.

같은 파일을 동시에 여러 번 로드하는 것이 안전한가요?

이 라이브러리는 동일한 Workbook 인스턴스에 대한 동시 접근에 대해 스레드 안전하지 않습니다. 스레드당 별개의 Workbook 인스턴스를 로드하십시오.

참조

 한국어