핵심 워크북 설정 작업

핵심 워크북 설정 작업

핵심 워크북 설정 작업

워크시트 그리드 밖에서, 워크북은 메타데이터와 구성을 포함하고 있으며 이는 Excel이 워크북을 해석하는 방식에 영향을 줍니다: 날짜 시스템, 문서 작성자, 로케일, 그리고 복구 정보가 저장되는지 여부. Workbook 클래스는 이를 Workbook.Settings, Workbook.Properties, Workbook.LoadDiagnostics을 통해 노출합니다. 저장 동작은 SaveOptions를 통해 제어됩니다.


워크북 설정

Workbook.SettingsWorkbookSettings 객체를 반환합니다. Date1904true으로 설정하면 1904 날짜 시스템을 사용합니다( macOS Excel에서 생성된 파일에 일반적). CultureCultureInfo 인스턴스로 설정하면 숫자 및 날짜 구문 분석 로케일을 제어할 수 있습니다.

using Aspose.Cells_FOSS;
using System.Globalization;

var wb = new Workbook();

// Use 1904 date system
wb.Settings.Date1904 = true;

// Set culture for number/date formatting
wb.Settings.Culture = new CultureInfo("en-US");

wb.Worksheets[0].Cells["A1"].PutValue("Settings applied");
wb.Save("settings.xlsx");

var loaded = new Workbook("settings.xlsx");
Console.WriteLine("Date1904: " + loaded.Settings.Date1904);

문서 속성

Workbook.PropertiesShowObjectsFilterPrivacy와 같은 표시 지향 플래그를 포함한 WorkbookProperties 객체를 반환합니다. 저작권 및 설명 메타데이터는 Workbook.DocumentProperties를 사용하며, 이는 Title, Subject, Author, Keywords, Comments, Category, Company, Manager를 직접 문자열 속성으로 노출합니다.

using Aspose.Cells_FOSS;

var wb = new Workbook();

var doc = wb.DocumentProperties;
doc.Title = "Quarterly Report";
doc.Subject = "Sales Data";
doc.Author = "Reporting Team";
doc.Company = "Contoso Ltd";
doc.Keywords = "sales, quarterly, 2026";
doc.Comments = "Generated by automated pipeline";

wb.Worksheets[0].Cells["A1"].PutValue("See document properties");
wb.Save("properties.xlsx");

var loaded = new Workbook("properties.xlsx");
Console.WriteLine("Title: " + loaded.DocumentProperties.Title);
Console.WriteLine("Author: " + loaded.DocumentProperties.Author);

로드 진단

워크북을 로드한 후, Workbook.LoadDiagnostics를 확인하여 라이브러리가 수리를 적용했는지 확인합니다. 구조적 수리가 하나라도 이루어진 경우 LoadDiagnostics.HasRepairstrue입니다. 수리 과정에서 데이터가 삭제된 경우 LoadDiagnostics.HasDataLossRisktrue입니다. 개별 DiagnosticEntry 객체에 Code, Severity, Message, RepairApplied, DataLossRisk와 함께 접근하려면 LoadDiagnostics.Issues를 반복합니다.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };

try
{
    var wb = new Workbook("possibly-corrupt.xlsx", opts);
    var diag = wb.LoadDiagnostics;

    if (diag.HasRepairs)
    {
        Console.WriteLine("Repairs applied: " + diag.HasRepairs);
        Console.WriteLine("Data loss risk: " + diag.HasDataLossRisk);
        foreach (var entry in diag.Issues)
        {
            Console.WriteLine($"  [{entry.Severity}] {entry.Code}: {entry.Message}");
            Console.WriteLine($"  RepairApplied={entry.RepairApplied}, DataLossRisk={entry.DataLossRisk}");
        }
    }
    else
    {
        Console.WriteLine("File loaded cleanly.");
    }
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Unrecoverable: " + ex.Message);
}

저장 옵션

Workbook.Save(path, SaveOptions)은(는) 저장 출력을 사용자 정의하기 위해 SaveOptions 객체를 받아들입니다. UseSharedStrings는 문자열 값이 공유 문자열 테이블에 저장되는지 여부를 제어합니다(반복 문자열이 많은 시트의 파일 크기를 줄임). ValidateBeforeSave은(는) 쓰기 전에 내부 워크북 검증을 실행합니다. CompactStyles는 사용되지 않는 스타일을 제거합니다. PreserveRecoveryMetadata는 Office 복구 메타데이터가 보존되는지 여부를 제어합니다.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

for (var i = 0; i < 100; i++)
    ws.Cells[i, 0].PutValue("Repeated string value");

var opts = new SaveOptions
{
    UseSharedStrings = true,
    ValidateBeforeSave = true,
    CompactStyles = true,
    PreserveRecoveryMetadata = false,
};

wb.Save("compact.xlsx", opts);
Console.WriteLine("Saved with SaveOptions.");

팁 및 모범 사례

  • 복구된 파일을 로드한 후 LoadDiagnostics.HasDataLossRisk를 확인하고 데이터가 손실되었을 가능성이 있으면 사용자에게 경고합니다.
  • 최종 사용자와 공유되는 파일에 대해 DocumentProperties.AuthorCompany을 설정합니다 — 이 값들은 Excel 파일 정보 패널에 표시됩니다.
  • UseSharedStrings = true은(는) 반복 문자열 값이 많은 시트(예: 상태 열)에 유용합니다; 숫자 중심 시트에는 거의 영향을 주지 않습니다.
  • 워크북 간에 셀을 복사할 때 날짜-값 변동을 방지하려면 소스 파일과 대상 파일 사이에 Date1904가 일치해야 합니다.

일반적인 문제

문제원인수정
LoadDiagnostics.Issues는 복구 후 비어 있습니다복구가 필요하지 않았거나 TryRepair*가 설정되지 않았습니다LoadOptions에서 TryRepairPackage = trueTryRepairXml = true을 설정합니다.
DocumentProperties.Title가 지속되지 않음DocumentProperties 대신 WorkbookProperties 사용Workbook.Properties 대신 Workbook.DocumentProperties를 통해 문자열 메타데이터에 액세스
저장 시 WorkbookSaveExceptionValidateBeforeSave = true와 검증 실패예외 메시지를 확인하십시오; 잘못된 데이터를 분리하려면 검증을 비활성화하십시오

FAQ

WorkbookPropertiesDocumentProperties의 차이점은 무엇인가요?

WorkbookProperties(은/는) Workbook.Properties을 통해 OOXML 표시 플래그(예: ShowObjects)를 보관합니다. DocumentProperties(은/는) Workbook.DocumentProperties을 통해 Dublin-Core 스타일 메타데이터 문자열(제목, 저자, 회사 등)을 보관합니다.

CompactStyles가 내가 필요한 스타일을 삭제합니까?

CompactStyles(은/는) 셀, 조건부 서식 또는 명명된 스타일 중 어느 것도 참조하지 않는 스타일만 제거합니다. 사용 중인 스타일은 절대 제거되지 않습니다.

수리가 시도되지 않았을 때도 LoadDiagnostics를 읽을 수 있나요?

예. 수리가 시도되지 않았을 경우 Issues 컬렉션이 비어 있으며, HasRepairsHasDataLossRisk는 모두 false을 반환합니다.


API Reference 요약

클래스 / 속성설명
Workbook.Settings반환값 WorkbookSettings
WorkbookSettings.Date19041904 날짜 시스템 사용
WorkbookSettings.Culture숫자/날짜 파싱을 위한 로케일
Workbook.DocumentProperties작성자, 제목, 회사 메타데이터
Workbook.LoadDiagnostics로드 후 복구 보고서
LoadDiagnostics.HasRepairstrue (수리가 적용된 경우)
LoadDiagnostics.HasDataLossRisktrue (수리 중 데이터가 폐기된 경우)
LoadDiagnostics.IssuesDiagnosticEntry 객체의 컬렉션
DiagnosticEntry.Code짧은 수리 코드 문자열
DiagnosticEntry.SeverityDiagnosticSeverity 열거형 값
DiagnosticEntry.Message인간이 읽을 수 있는 복구 설명
SaveOptions.UseSharedStrings문자열을 공유 문자열 테이블에 저장
SaveOptions.ValidateBeforeSave쓰기 전에 내부 검증을 실행
SaveOptions.CompactStyles사용되지 않는 스타일 제거

참조

 한국어