Как работать с основными настройками книги в .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. Установите Date1904 = true для файлов, созданных в macOS, использующих систему дат 1904 года. Установите 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 изменяет эпоху, используемую для серийных номеров дат. Устанавливайте его в true только для файлов, полученных из macOS Excel с включённой системой дат 1904 года; смешивание систем приводит к ошибкам на 1462 дня.
Часто задаваемые вопросы
В чем разница между WorkbookSettings и WorkbookProperties?
WorkbookSettings (через Workbook.Settings) содержит значения конфигурации, такие как Date1904 и Culture. WorkbookProperties (через Workbook.Properties) содержит флаги отображения OOXML, такие как ShowObjects. Строки метаданных документа (Title, Author и т.д.) находятся в Workbook.DocumentProperties.
CompactStyles когда‑нибудь удаляет стили, которые мне нужны?
Нет. CompactStyles удаляет только стили, которые не используются ни в одной ячейке или правиле форматирования в рабочей книге.
Могу ли я прочитать LoadDiagnostics даже если ремонт не был выполнен?
Да. Коллекция Issues будет пустой, и оба HasRepairs и HasDataLossRisk вернут false.