Робота з основними налаштуваннями робочої книги

Робота з основними налаштуваннями робочої книги

Робота з основними налаштуваннями робочої книги

Окрім сітки аркуша, робоча книга містить метадані та конфігурацію, які впливають на те, як Excel її інтерпретує: систему дат, автора документа, локаль та чи зберігається інформація про відновлення. Клас Workbook надає доступ до цих даних через Workbook.Settings, Workbook.Properties та Workbook.LoadDiagnostics. Поведінка збереження контролюється через SaveOptions.


Налаштування робочої книги

Workbook.Settings повертає об’єкт WorkbookSettings. Встановіть Date1904 у значення true, щоб використовувати систему дат 1904 (поширену у файлах, створених у macOS Excel). Встановіть Culture у екземпляр CultureInfo, щоб контролювати локаль розбору чисел і дат.

using Aspose.Cells_FOSS;
using System.Globalization;

var wb = new Workbook();

// Use 1904 date system
wb.Settings.Date1904 = true;

// Set culture for number/date formatting
wb.Settings.Culture = new CultureInfo("en-US");

wb.Worksheets[0].Cells["A1"].PutValue("Settings applied");
wb.Save("settings.xlsx");

var loaded = new Workbook("settings.xlsx");
Console.WriteLine("Date1904: " + loaded.Settings.Date1904);

Властивості документа

Workbook.Properties повертає об’єкт WorkbookProperties з прапорцями, орієнтованими на відображення, такими як ShowObjects і FilterPrivacy. Для авторства та описових метаданих використовуйте Workbook.DocumentProperties, який надає Title, Subject, Author, Keywords, Comments, Category, Company та Manager як прямі рядкові властивості.

using Aspose.Cells_FOSS;

var wb = new Workbook();

var doc = wb.DocumentProperties;
doc.Title = "Quarterly Report";
doc.Subject = "Sales Data";
doc.Author = "Reporting Team";
doc.Company = "Contoso Ltd";
doc.Keywords = "sales, quarterly, 2026";
doc.Comments = "Generated by automated pipeline";

wb.Worksheets[0].Cells["A1"].PutValue("See document properties");
wb.Save("properties.xlsx");

var loaded = new Workbook("properties.xlsx");
Console.WriteLine("Title: " + loaded.DocumentProperties.Title);
Console.WriteLine("Author: " + loaded.DocumentProperties.Author);

Діагностика завантаження

Після завантаження робочої книги перевірте Workbook.LoadDiagnostics, щоб дізнатися, чи бібліотека застосувала якісь виправлення. LoadDiagnostics.HasRepairs є true, якщо було виконано принаймні одне структурне виправлення. LoadDiagnostics.HasDataLossRisk є true, якщо виправлення відкинули дані. Ітеруйте LoadDiagnostics.Issues, щоб отримати окремі об’єкти DiagnosticEntry з Code, Severity, Message, RepairApplied та DataLossRisk.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };

try
{
    var wb = new Workbook("possibly-corrupt.xlsx", opts);
    var diag = wb.LoadDiagnostics;

    if (diag.HasRepairs)
    {
        Console.WriteLine("Repairs applied: " + diag.HasRepairs);
        Console.WriteLine("Data loss risk: " + diag.HasDataLossRisk);
        foreach (var entry in diag.Issues)
        {
            Console.WriteLine($"  [{entry.Severity}] {entry.Code}: {entry.Message}");
            Console.WriteLine($"  RepairApplied={entry.RepairApplied}, DataLossRisk={entry.DataLossRisk}");
        }
    }
    else
    {
        Console.WriteLine("File loaded cleanly.");
    }
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Unrecoverable: " + ex.Message);
}

Параметри збереження

Workbook.Save(path, SaveOptions) приймає об’єкт SaveOptions для налаштування вихідного файлу. UseSharedStrings керує тим, чи зберігаються рядкові значення у спільній таблиці рядків (зменшує розмір файлу для листів з багатьма повторюваними рядками). ValidateBeforeSave виконує внутрішню перевірку робочої книги перед записом. CompactStyles видаляє невикористані стилі. PreserveRecoveryMetadata керує тим, чи зберігаються метадані відновлення Office.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

for (var i = 0; i < 100; i++)
    ws.Cells[i, 0].PutValue("Repeated string value");

var opts = new SaveOptions
{
    UseSharedStrings = true,
    ValidateBeforeSave = true,
    CompactStyles = true,
    PreserveRecoveryMetadata = false,
};

wb.Save("compact.xlsx", opts);
Console.WriteLine("Saved with SaveOptions.");

Поради та найкращі практики

  • Перевірте LoadDiagnostics.HasDataLossRisk після завантаження виправлених файлів і попередьте користувачів, якщо дані могли бути втрачено.
  • Встановіть DocumentProperties.Author та Company для файлів, які поширюються серед кінцевих користувачів — вони відображаються у панелі інформації про файл в Excel.
  • UseSharedStrings = true корисний для листів з багатьма повторюваними рядковими значеннями (наприклад, стовпці статусу); він має мінімальний вплив на листи, що переважають числові дані.
  • Date1904 має збігатися між вихідним і цільовим файлом, щоб уникнути зсуву дат-значень під час копіювання клітинок між робочими книгами.

Типові проблеми

ПроблемаПричинаВиправлення
LoadDiagnostics.Issues порожній після виправленняВиправлення не були потрібні або TryRepair* не було встановленоВстановіть TryRepairPackage = true та TryRepairXml = true у LoadOptions
DocumentProperties.Title не збереженоВикористання WorkbookProperties замість DocumentPropertiesОтримуйте метадані рядка через Workbook.DocumentProperties, а не через Workbook.Properties
WorkbookSaveException при збереженніПомилка валідації з ValidateBeforeSave = trueПеревірте повідомлення про виключення; вимкніть валідацію, щоб ізолювати неправильні дані

FAQ

У чому різниця між WorkbookProperties та DocumentProperties?

WorkbookProperties (через Workbook.Properties) містить прапорці відображення OOXML (наприклад, ShowObjects). DocumentProperties (через Workbook.DocumentProperties) містить метадані у форматі Dublin-Core: Title, Author, Company, тощо.

Чи видаляє CompactStyles стилі, які мені потрібні?

CompactStyles видаляє лише стилі, які не використовуються жодною клітинкою, умовним форматуванням або іменованим стилем. Стилі, що використовуються, ніколи не видаляються.

Чи можу я читати LoadDiagnostics, навіть коли ремонт не був виконаний?

Так. Коли ремонт не був виконаний, колекція Issues порожня, і і HasRepairs, і HasDataLossRisk повертають false.


API Reference Підсумок

Клас / ВластивістьОпис
Workbook.SettingsПовертає WorkbookSettings
WorkbookSettings.Date1904Використовуйте систему дат 1904
WorkbookSettings.CultureЛокаль для розбору чисел/дат
Workbook.DocumentPropertiesМетадані автора, назви, компанії
Workbook.LoadDiagnosticsЗвіт про виправлення після завантаження
LoadDiagnostics.HasRepairstrue якщо було застосовано будь-яке виправлення
LoadDiagnostics.HasDataLossRisktrue якщо виправлення відкинуло дані
LoadDiagnostics.IssuesКолекція об’єктів DiagnosticEntry
DiagnosticEntry.CodeКороткий рядок коду виправлення
DiagnosticEntry.SeverityDiagnosticSeverity значення enum
DiagnosticEntry.MessageЛюдсько-читабельний опис ремонту
SaveOptions.UseSharedStringsЗберігати рядки у спільній таблиці рядків
SaveOptions.ValidateBeforeSaveЗапустити внутрішню валідацію перед записом
SaveOptions.CompactStylesВидалити невикористані стилі

Дивіться також

 Українська