コア ワークブック設定の操作

コア ワークブック設定の操作

コア ワークブック設定の操作

ワークシートのグリッドを超えて、ワークブックはメタデータと構成情報を保持し、Excel がそれを解釈する方法に影響を与えます。日付システム、文書の作成者、ロケール、そしてリカバリ情報が保存されているかどうかが含まれます。Workbook クラスはこれらを Workbook.SettingsWorkbook.PropertiesWorkbook.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.PropertiesWorkbookProperties オブジェクトを返し、ShowObjectsFilterPrivacy などの表示指向フラグを含みます。作成者情報や記述メタデータについては Workbook.DocumentProperties を使用し、TitleSubjectAuthorKeywordsCommentsCategoryCompanyManager を直接文字列プロパティとして公開します。

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 を確認してライブラリが修復を適用したかどうかを確認します。構造修復が少なくとも1つ行われた場合、LoadDiagnostics.HasRepairstrue です。修復によりデータが破棄された場合、LoadDiagnostics.HasDataLossRisktrue です。LoadDiagnostics.Issues を反復して、DiagnosticEntry オブジェクトを CodeSeverityMessageRepairApplied、および DataLossRisk で取得します。

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* が設定されていませんでしたLoadOptionsTryRepairPackage = trueTryRepairXml = true を設定します。
DocumentProperties.Title が永続化されていませんDocumentProperties の代わりに WorkbookProperties を使用Workbook.Properties ではなく Workbook.DocumentProperties を通じて文字列メタデータにアクセス
保存時のWorkbookSaveException検証失敗(ValidateBeforeSave = true例外メッセージを確認してください;検証を無効にして問題のデータを特定してください

FAQ

WorkbookPropertiesDocumentProperties の違いは何ですか?

WorkbookProperties(via Workbook.Properties)は OOXML 表示フラグ(例: ShowObjects)を保持します。DocumentProperties(via Workbook.DocumentProperties)は Dublin-Core スタイルのメタデータ文字列(Title、Author、Company など)を保持します。

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未使用のスタイルを削除する

参照

 日本語