コア ワークブック設定の操作
コア ワークブック設定の操作
ワークシートのグリッドを超えて、ワークブックはメタデータと構成情報を保持し、Excel がそれを解釈する方法に影響を与えます。日付システム、文書の作成者、ロケール、そしてリカバリ情報が保存されているかどうかが含まれます。Workbook クラスはこれらを Workbook.Settings、Workbook.Properties、Workbook.LoadDiagnostics を通じて公開します。保存動作は SaveOptions で制御されます。
ワークブック設定
Workbook.Settings は WorkbookSettings オブジェクトを返します。Date1904 を true に設定すると、1904 日付システムを使用します(macOS Excel から生成されたファイルで一般的です)。Culture を CultureInfo インスタンスに設定すると、数値と日付の解析ロケールを制御できます。
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.Properties は WorkbookProperties オブジェクトを返し、ShowObjects や FilterPrivacy などの表示指向フラグを含みます。作成者情報や記述メタデータについては 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 を確認してライブラリが修復を適用したかどうかを確認します。構造修復が少なくとも1つ行われた場合、LoadDiagnostics.HasRepairs は true です。修復によりデータが破棄された場合、LoadDiagnostics.HasDataLossRisk は true です。LoadDiagnostics.Issues を反復して、DiagnosticEntry オブジェクトを Code、Severity、Message、RepairApplied、および 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.AuthorとCompanyを設定します — これらは Excel のファイル情報パネルに表示されます。 UseSharedStrings = trueは多数の繰り返し文字列値を持つシート(例: ステータス列)に有益です;数値が多いシートへの影響は最小限です。- ワークブック間でセルをコピーする際に日付値のずれを防ぐため、ソースファイルとターゲットファイルの
Date1904は一致している必要があります。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
LoadDiagnostics.Issues は修復後に空です | 修復は不要だったか、TryRepair* が設定されていませんでした | LoadOptions に TryRepairPackage = true と TryRepairXml = true を設定します。 |
DocumentProperties.Title が永続化されていません | DocumentProperties の代わりに WorkbookProperties を使用 | Workbook.Properties ではなく Workbook.DocumentProperties を通じて文字列メタデータにアクセス |
保存時のWorkbookSaveException | 検証失敗(ValidateBeforeSave = true) | 例外メッセージを確認してください;検証を無効にして問題のデータを特定してください |
FAQ
WorkbookProperties と DocumentProperties の違いは何ですか?
WorkbookProperties(via Workbook.Properties)は OOXML 表示フラグ(例: ShowObjects)を保持します。DocumentProperties(via Workbook.DocumentProperties)は Dublin-Core スタイルのメタデータ文字列(Title、Author、Company など)を保持します。
CompactStyles は必要なスタイルを削除しますか?
CompactStyles は、セル、条件付き書式、または名前付きスタイルのいずれからも参照されていないスタイルだけを削除します。使用中のスタイルは決して削除されません。
修復が試みられなかった場合でも LoadDiagnostics を読むことができますか?
はい。修復が試みられなかった場合、Issues コレクションは空で、HasRepairs と HasDataLossRisk の両方が false を返します。
API Reference 概要
| クラス / プロパティ | 説明 |
|---|---|
Workbook.Settings | 戻り値は WorkbookSettings |
WorkbookSettings.Date1904 | 1904 年の日付システムを使用 |
WorkbookSettings.Culture | 数字/日付解析用ロケール |
Workbook.DocumentProperties | 作者、タイトル、会社メタデータ |
Workbook.LoadDiagnostics | 読み込み後の修復レポート |
LoadDiagnostics.HasRepairs | true が適用された場合 |
LoadDiagnostics.HasDataLossRisk | true(修復がデータを破棄した場合) |
LoadDiagnostics.Issues | DiagnosticEntry オブジェクトのコレクション |
DiagnosticEntry.Code | 短い修復コード文字列 |
DiagnosticEntry.Severity | DiagnosticSeverity 列挙型の値 |
DiagnosticEntry.Message | 人が読める修理説明 |
SaveOptions.UseSharedStrings | 文字列を共有文字列テーブルに保存する |
SaveOptions.ValidateBeforeSave | 書き込み前に内部検証を実行する |
SaveOptions.CompactStyles | 未使用のスタイルを削除する |