如何在 .NET 中使用核心工作簿设置
Aspose.Cells FOSS for .NET 通过 Workbook.Settings(区域设置和日期系统)、Workbook.DocumentProperties(作者元数据)、Workbook.LoadDiagnostics(修复报告)和 SaveOptions(保存行为)公开工作簿级别的配置。使用 dotnet add package Aspose.Cells_FOSS 安装。
分步指南
步骤 1:安装软件包
dotnet add package Aspose.Cells.FOSS步骤 2:导入命名空间
using Aspose.Cells_FOSS;
using System.Globalization;步骤 3:配置 WorkbookSettings
Workbook.Settings 返回一个 WorkbookSettings 对象。为使用 1904 日期系统的 macOS 来源文件设置 Date1904 = true。设置 Culture 以控制数字和日期解析的语言环境。
using Aspose.Cells_FOSS;
using System.Globalization;
var wb = new Workbook();
wb.Settings.Date1904 = false;
wb.Settings.Culture = new CultureInfo("en-US");
wb.Worksheets[0].Cells["A1"].PutValue("Settings configured");
wb.Save("settings.xlsx");
var loaded = new Workbook("settings.xlsx");
Console.WriteLine("Date1904: " + loaded.Settings.Date1904);第 4 步:设置文档属性
Workbook.DocumentProperties 将 Title、Subject、Author、Keywords、Comments、Category、Company 和 Manager 公开为直接的字符串属性。
using Aspose.Cells_FOSS;
var wb = new Workbook();
wb.DocumentProperties.Title = "Quarterly Report";
wb.DocumentProperties.Author = "Reporting Team";
wb.DocumentProperties.Company = "Contoso Ltd";
wb.DocumentProperties.Keywords = "quarterly, sales, 2026";
wb.Save("properties.xlsx");
var loaded = new Workbook("properties.xlsx");
Console.WriteLine("Title: " + loaded.DocumentProperties.Title);
Console.WriteLine("Author: " + loaded.DocumentProperties.Author);第 5 步:使用 SaveOptions
Workbook.Save(path, SaveOptions) 接受一个 SaveOptions 对象来定制输出。关键属性:UseSharedStrings(对包含重复字符串的工作表可减小文件大小),ValidateBeforeSave(在写入前运行验证),以及 CompactStyles(移除未使用的样式)。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
for (var i = 0; i < 50; i++)
ws.Cells[i, 0].PutValue("Repeated text");
var opts = new SaveOptions
{
UseSharedStrings = true,
ValidateBeforeSave = true,
CompactStyles = true,
};
wb.Save("compact.xlsx", opts);
Console.WriteLine("Saved with SaveOptions.");第 6 步:在修复后读取 LoadDiagnostics
使用 TryRepairPackage = true 加载后,检查 Workbook.LoadDiagnostics 以查看是否已应用任何修复。
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
Console.WriteLine("HasRepairs: " + diag.HasRepairs);
Console.WriteLine("HasDataLossRisk: " + diag.HasDataLossRisk);
foreach (var entry in diag.Issues)
Console.WriteLine($" [{entry.Severity}] {entry.Code}: {entry.Message}");常见问题与解决方案
WorkbookSaveException when ValidateBeforeSave = true. 工作簿包含结构不一致。禁用 ValidateBeforeSave 临时以保存并检查文件,然后修复有问题的内容。
文档属性在 Excel 的文件信息面板中不可见。 确保您正在对 Workbook.DocumentProperties, 而不是 Workbook.Properties. 后者保存显示标志,而不是元数据字符串。
Date1904 = true 导致日期值偏移。 Date1904 更改用于日期序列号的纪元。仅在需要时将其设置为 true 针对源自 macOS Excel 且启用了 1904 日期系统的文件;混用系统会导致相差 1462 天的错误。
常见问题
WorkbookSettings 与 WorkbookProperties 有什么区别?
WorkbookSettings(通过 Workbook.Settings)保存诸如 Date1904 和 Culture 的配置值。WorkbookProperties(通过 Workbook.Properties)保存 OOXML 显示标志,例如 ShowObjects。文档元数据字符串(标题、作者等)存放在 Workbook.DocumentProperties 中。
CompactStyles 会删除我需要的样式吗?
不。CompactStyles 只会删除工作簿中未被任何单元格或格式规则引用的样式。
即使没有尝试修复,我还能读取 LoadDiagnostics 吗?
是的。Issues 集合将为空,且 HasRepairs 和 HasDataLossRisk 都会返回 false。