كيفية العمل مع إعدادات دفتر العمل الأساسية في .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 فقط للملفات التي نشأت من Excel على macOS مع تمكين نظام التاريخ 1904؛ خلط الأنظمة يسبب أخطاء بمقدار 1462 يوماً.
الأسئلة المتكررة
ما هو الفرق بين WorkbookSettings و WorkbookProperties؟
WorkbookSettings (عبر Workbook.Settings) يحتوي على قيم التكوين مثل Date1904 و Culture. WorkbookProperties (عبر Workbook.Properties) يحتوي على أعلام عرض OOXML مثل ShowObjects. سلاسل بيانات تعريف المستند (العنوان، المؤلف، إلخ) موجودة في Workbook.DocumentProperties.
هل يزيل CompactStyles الأنماط التي أحتاجها أبداً؟
لا. CompactStyles يزيل فقط الأنماط التي لا يتم الإشارة إليها من قبل أي خلية أو قاعدة تنسيق في دفتر العمل.
هل يمكنني قراءة LoadDiagnostics حتى عندما لم يتم محاولة إصلاح؟
نعم. ستكون مجموعة Issues فارغة، وسيرجع كل من HasRepairs وHasDataLossRisk false.