如何在 .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 当 ValidateBeforeSave = true。
工作簿包含结构不一致。暂时禁用 ValidateBeforeSave 以保存并检查文件,然后修复有问题的内容。
Excel 文件信息面板中看不到文档属性。
确保您在 Workbook.DocumentProperties 上设置属性,而不是 Workbook.Properties。后者保存的是显示标志,而不是元数据字符串。
Date1904 = true 导致日期值偏移。
Date1904 更改用于日期序列号的纪元。仅在文件来源于启用了 1904 日期系统的 macOS Excel 时将其设置为 true;混合系统会导致 1462 天的误差。
常见问题
WorkbookSettings和WorkbookProperties之间有什么区别?
WorkbookSettings(通过 Workbook.Settings)保存配置值,例如 Date1904 和 Culture。WorkbookProperties(通过 Workbook.Properties)保存 OOXML 显示标志,例如 ShowObjects。文档元数据字符串(标题、作者等)位于 Workbook.DocumentProperties。
CompactStyles会删除我需要的样式吗?
不。CompactStyles 只会删除工作簿中未被任何单元格或格式规则引用的样式。
即使没有进行修复,我还能读取 LoadDiagnostics 吗?
是的。Issues 集合将为空,HasRepairs 和 HasDataLossRisk 都将返回 false。