Как работать с основными настройками книги в .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. Установите 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.

См. также

 Русский