کار با تنظیمات اصلی کتاب‌کار

کار با تنظیمات اصلی کتاب‌کار

کار با تنظیمات اصلی دفتر کار

فراتر از شبکهٔ صفحه‌کار، یک دفتر کار متادیتا و پیکربندی‌ای دارد که بر نحوهٔ تفسیر اکسل از آن تأثیر می‌گذارد: سیستم تاریخ، نویسندهٔ سند، زبان و اینکه آیا اطلاعات بازیابی ذخیره می‌شود یا نه. کلاس Workbook این موارد را از طریق Workbook.Settings، Workbook.Properties و Workbook.LoadDiagnostics در دسترس قرار می‌دهد. رفتار ذخیره‌سازی از طریق SaveOptions کنترل می‌شود.


تنظیمات دفتر کار

Workbook.Settings یک شیء WorkbookSettings برمی‌گرداند. Date1904 را به true تنظیم کنید تا از سیستم تاریخ ۱۹۰۴ استفاده شود (که در فایل‌های منبع‌دار از Excel macOS رایج است). 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 است اگر تعمیر داده‌ای را حذف کرده باشد. برای دسترسی به اشیای DiagnosticEntry جداگانه با Code، Severity، Message، RepairApplied و DataLossRisk، LoadDiagnostics.Issues را تکرار کنید.

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 را تنظیم کنید — این‌ها در پنل اطلاعات فایل در اکسل نمایش داده می‌شوند.
  • 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.Severityمقدار enum DiagnosticSeverity
DiagnosticEntry.Messageتوصیف تعمیر قابل خواندن برای انسان
SaveOptions.UseSharedStringsرشته‌ها را در جدول رشته‌های مشترک ذخیره کنید
SaveOptions.ValidateBeforeSaveقبل از نوشتن اعتبارسنجی داخلی را اجرا کنید
SaveOptions.CompactStylesحذف سبک‌های استفاده نشده

همچنین ببینید:

 فارسی