소개
Aspose.Cells FOSS for Rust는 Aspose.Cells FOSS 패밀리를 Rust 생태계에 도입합니다. aspose-cells-foss-rust 크레이트를 사용하면 Rust 애플리케이션이 Excel XLSX 워크북을 처음부터 생성하고, 기존 파일을 로드하며, 내용을 수정하고, 결과를 저장할 수 있습니다 — Microsoft Office 설치, COM 자동화, 외부 런타임 없이.
이 크레이트는 MIT 라이선스를 가지고 있으며 Rust 2021 에디션을 대상으로 합니다. Rust 개발자가 기대하는 관례를 따릅니다: Workbook::new 같은 생성자, CellsError를 통한 Result 기반 오류 처리, 그리고 차용 규칙을 명확히 하는 get_worksheets_mut, get_cells_mut와 같은 명시적 가변 접근자. 스프레드시트를 생성하거나 소비해야 하는 백엔드 서비스, CLI 도구, 데이터 파이프라인을 구축한다면, 이 라이브러리는 네이티브 방식으로 이를 수행할 수 있게 해줍니다.
이 섹션은 최신 제품 동작 및 API 적용 범위에 대한 현재 소스 모델을 기준으로 검토되었습니다.
Aspose.Cells FOSS은 이미 .NET, C++, Java, Python, 그리고 TypeScript용으로 제공되고 있습니다; Rust 크레이트는 동일한 목표를 가지고 패밀리에 합류합니다: 관대한 라이선스 아래 정직하고 검증 가능한 XLSX 지원.
포함 내용
워크북, 워크시트, 그리고 타입이 지정된 셀 값
Workbook은 하나의 워크시트로 시작하고 add_worksheet를 통해 확장됩니다. 셀은 전용 setter를 통해 문자열, 정수, 불리언, 소수, 날짜-시간과 같은 타입화된 값을 받아들이므로 문자열 기반 변환이 필요하지 않습니다:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Hello")?;
cells.get("B1")?.put_value_i32(123)?;
cells.get("C1")?.put_value_bool(true)?;
cells.get("D1")?.put_value_decimal(12.5)?;
}
workbook.save("hello.xlsx")?;
캐시된 결과가 있는 수식
수식은 캐시된 값과 함께 기록되므로 저장된 파일을 Excel에서 열면 즉시 올바른 결과가 표시됩니다 — 재계산이 필요하지 않습니다:
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;
데이터 범위에 고정된 차트
ChartType 열거형에 포함된 열, 선 및 기타 차트 유형을 워크시트의 셀 범위에 고정할 수 있으며, 로드된 파일에서 차트 기하 정보를 다시 읽어올 수 있습니다:
let mut charts = sheet.get_charts();
charts.add(
ChartType::Column,
"Charts!$B$1:$B$13".to_string(),
0,
4,
18,
8,
)?;
스타일링, 페이지 설정 및 구조
셀 서식은 Font, Fill, Borders가 포함된 CellStyle을 통해 흐르며, StyleFlag로 선택적으로 적용됩니다. PageSetup은 인쇄용 용지 크기와 방향을 제어하고, FreezePane은 헤더 행을 고정하여 항상 보이게 하며, 구조화된 테이블은 TableStyleType을 가진 ListObject를 통해 제공됩니다.
데이터 유효성 검사, 조건부 서식 및 필터
데이터 품질 기능은 핵심 인터페이스에 포함됩니다: OperatorType을 활용한 Validation 규칙, FormatCondition을 통한 조건부 서식, AutoFilter를 이용한 자동 필터, DefinedName으로 정의된 이름, 그리고 WorkbookProtection 및 WorksheetProtection을 통한 워크북·워크시트 보호.
진단을 포함한 방어적 로딩
실제 XLSX 파일은 항상 정형화되어 있지는 않습니다. LoadOptions는 복구 플래그를 노출하고, LoadDiagnostics는 로더가 마주한 내용을 보고합니다:
let options = LoadOptions {
try_repair_package: true,
try_repair_xml: true,
..LoadOptions::default()
};
let loaded = Workbook::load_xlsx_with_options(&valid_path, &options)?;
println!(
"Loaded workbook with {} worksheet(s) and {} diagnostic issue(s).",
loaded.get_worksheets().count(),
loaded.get_load_diagnostics().issues().len()
);
빠른 시작
크레이트를 git 의존성으로 Cargo.toml에 추가하세요(아직 crates.io에 공개되지 않았습니다):
# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }그런 다음 첫 번째 워크북을 생성하고, 저장한 뒤 다시 로드하세요:
use aspose_cells_foss_rust::{CellValue, Workbook};
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
// Create a new workbook (starts with one sheet, "Sheet1").
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Hello")?;
cells.get("B1")?.put_value_i32(123)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;
}
workbook.save("hello.xlsx")?;
// Load it back.
let loaded = Workbook::load_xlsx("hello.xlsx")?;
let sheet = loaded.worksheet("Sheet1")?;
let cells = sheet.get_cells();
println!("A1 = {}", cells.get("A1")?.display_string_value());
Ok(())
}
지원되는 형식
| 형식 | 확장자 | 읽기 | 쓰기 |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
XLSX는 현재 릴리스의 핵심입니다: Workbook::load_xlsx와 Workbook::save를 통한 완전한 왕복 읽기 및 쓰기이며, LoadFormat 및 SaveFormat 열거형이 명시적인 형식 선택을 관리합니다.
오픈 소스 및 라이선스
Aspose.Cells FOSS for Rust는 MIT 라이선스를 가지고 있습니다. 전체 소스 코드는 GitHub에서 제공되며, 라이선스는 상업적 사용, 수정 및 재배포를 허용합니다.