如何在 .NET 中使用核心工作簿设置

如何在 .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.DocumentPropertiesTitleSubjectAuthorKeywordsCommentsCategoryCompanyManager 公开为直接字符串属性。

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}");

常见问题及解决方案

WorkbookSaveExceptionValidateBeforeSave = true 工作簿包含结构不一致。暂时禁用 ValidateBeforeSave 以保存并检查文件,然后修复有问题的内容。

Excel 文件信息面板中看不到文档属性。
确保您在 Workbook.DocumentProperties 上设置属性,而不是 Workbook.Properties。后者保存的是显示标志,而不是元数据字符串。

Date1904 = true 导致日期值偏移。
Date1904 更改用于日期序列号的纪元。仅在文件来源于启用了 1904 日期系统的 macOS Excel 时将其设置为 true;混合系统会导致 1462 天的误差。

常见问题

WorkbookSettingsWorkbookProperties之间有什么区别?

WorkbookSettings(通过 Workbook.Settings)保存配置值,例如 Date1904CultureWorkbookProperties(通过 Workbook.Properties)保存 OOXML 显示标志,例如 ShowObjects。文档元数据字符串(标题、作者等)位于 Workbook.DocumentProperties

CompactStyles会删除我需要的样式吗?

不。CompactStyles 只会删除工作簿中未被任何单元格或格式规则引用的样式。

即使没有进行修复,我还能读取 LoadDiagnostics 吗?

是的。Issues 集合将为空,HasRepairsHasDataLossRisk 都将返回 false

另请参阅

 中文