كيفية العمل مع إعدادات دفتر العمل الأساسية في .NET

كيفية العمل مع إعدادات دفتر العمل الأساسية في .NET

Aspose.Cells FOSS لـ .NET يكشف عن تكوين على مستوى دفتر العمل عبر Workbook.Settings (الإعدادات الإقليمية ونظام التاريخ)، Workbook.DocumentProperties (بيانات تعريف المؤلف)، Workbook.LoadDiagnostics (تقرير الإصلاح)، وSaveOptions (سلوك الحفظ). قم بالتثبيت بأمر dotnet add package واحد.

دليل خطوة بخطوة

الخطوة 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 when 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. سلاسل البيانات الوصفية للمستند (العنوان، المؤلف، إلخ) موجودة في Workbook.DocumentProperties.

هل يقوم CompactStyles أبدًا بإزالة الأنماط التي أحتاجها؟

لا. CompactStyles يزيل الأنماط التي لا يتم الإشارة إليها من قبل أي خلية أو قاعدة تنسيق في دفتر العمل.

هل يمكنني قراءة LoadDiagnostics حتى عندما لم يتم محاولة إصلاح؟

نعم. مجموعة Issues ستكون فارغة وكلا من HasRepairs وHasDataLossRisk سيعيدان false.

انظر أيضاً

 العربية