العمل مع القيم المفصولة (DSV) – إنشاء مستند قابل للتحرير
إذا كنت مطور .NET يحتاج إلى create editable document من قيم مفصولة (DSV) مثل CSV أو TSV، فقد وصلت إلى المكان الصحيح. في أول 100 كلمة سنشرح لماذا يُعد GroupDocs.Editor for .NET الطريقة الأكثر موثوقية لـ read delimited text C#، وتحريره، ثم حفظه مرة أخرى دون فقدان التنسيق. ستحصل على سير عمل كامل جاهز للنسخ واللصق يتناسب طبيعياً مع أي حل Visual Studio.
إجابات سريعة
- أي مكتبة تتعامل مع تحرير CSV بأفضل شكل في .NET؟ GroupDocs.Editor for .NET.
- هل يمكنني تحرير ملفات CSV الكبيرة في Visual Studio؟ نعم – تقوم API ببث البيانات وتتجنب تحميل الملف بالكامل في الذاكرة.
- هل أحتاج إلى ترخيص للاستخدام في الإنتاج؟ يتطلب ترخيص تجاري؛ يتوفر نسخة تجريبية مجانية.
- ما الصيغ التي يمكنني تصديرها بعد التحرير؟ CSV، TSV، وصيغ جداول Excel المتوافقة.
- هل API متوافق مع .NET 6+؟ بالطبع – يدعم .NET Framework 4.5+، .NET Core 3.1+، .NET 5، و .NET 6.
ما هو “create editable document” في سياق GroupDocs.Editor؟
Create editable document يعني إنشاء مثيل EditableDocument يمثل نسخة قابلة للتعديل من ملف المصدر (CSV، TSV، إلخ) في الذاكرة. يتيح لك هذا الكائن قراءة المحتوى وتعديله وإعادة حفظه باستخدام نفس API. يوفر طرقًا لاسترجاع نص المستند، وتطبيق التغييرات، وحفظه مرة أخرى بصيغ مختلفة، مع ضمان الحفاظ على محاذاة الأعمدة والاقتباسات.
لماذا تستخدم GroupDocs.Editor لمعالجة DSV؟
GroupDocs.Editor يعالج more than 50 input and output formats، بما في ذلك CSV، TSV، وجداول Excel المتوافقة، مع الحفاظ على استهلاك الذاكرة أقل من 10 ميغابايت للملفات التي يصل حجمها إلى 500 ميغابايت. كما يحافظ تلقائيًا على محاذاة الأعمدة، وقواعد الاقتباس، والترميزات المخصصة، مما يلغي الحاجة إلى منطق تحليل يدوي.
المتطلبات المسبقة
قبل أن نبدأ، تأكد من تثبيت ما يلي:
- Visual Studio (أي إصدار حديث) – ستقوم بالتطوير وتصحيح الأخطاء مباشرة داخل بيئة IDE.
- GroupDocs.Editor for .NET – قم بتنزيل أحدث حزمة here.
- Basic C# knowledge – يفترض الدرس أنك تستطيع إنشاء مشروع console أو ASP.NET وإضافة حزم NuGet.
استيراد مساحات الأسماء
توجد الفئات Editor، EditableDocument، وفئات الخيارات في مساحة الأسماء GroupDocs.Editor.
فئة DelimitedTextEditOptions هي نقطة الدخول لتحديد الفاصل (فاصلة، تبويب، إلخ) وقواعد التحليل الأخرى.
using System.Collections.Generic;
using System.IO;
using GroupDocs.Editor.Formats;
using GroupDocs.Editor.HtmlCss.Resources;
using GroupDocs.Editor.Options;
كيفية إنشاء مستند قابل للتحرير من ملف CSV؟
حمّل ملف CSV المصدر باستخدام Editor واستدعِ طريقة Edit، مع تمرير مثيل DelimitedTextEditOptions الذي يحدد فاصل الفاصلة. تُعيد الطريقة EditableDocument الذي يمكنك التلاعب به في الذاكرة. يغطي نمط الخطوتين هذا — تحميل → تحرير — سيناريوهات read delimited text C# ويضمن الحفاظ على بنية الملف الأصلي.
الخطوة 1: الحصول على مسار ملف DSV الإدخالي
أولاً، تحتاج إلى تحديد المسار المطلق أو النسبي لملف DSV المصدر. للتوضيح سنستخدم ملف CSV بسيط موجود في مجلد المشروع Data.
string inputFilePath = "Your Sample Document";
الخطوة 2: إنشاء مثيل Editor
Editor هي الفئة الأساسية التي تنسق عملية التحميل، التحرير، والحفظ. إنشاء مثيل منها باستخدام كائن FileInfo يمنحك تحكمًا كاملًا في دورة حياة الملف.
using (Editor editor = new Editor(inputFilePath))
{
الخطوة 3: إنشاء خيارات تحرير DSV
DelimitedTextEditOptions تخبر المحرر كيفية تفسير الملف. يمكنك تحديد الفاصل، ما إذا كان الصف الأول يحتوي على رؤوس، وترميز الأحرف.
Options.DelimitedTextEditOptions editOptions = new DelimitedTextEditOptions(",");
editOptions.ConvertDateTimeData = false;
editOptions.ConvertNumericData = true;
editOptions.TreatConsecutiveDelimitersAsOne = true;
الخطوة 4: إنشاء مثيل EditableDocument
EditableDocument يمثل نسخة قابلة للتعديل في الذاكرة من الملف المصدر. استدعاء Editor.Edit مع الخيارات يُعيد EditableDocument. هذا الكائن يحتفظ بنص الملف كسلسلة قابلة للتعديل، جاهزة لأي عملية parse delimited values C# تحتاجها.
EditableDocument beforeEdit = editor.Edit(editOptions);
الخطوة 5: تحرير محتوى المستند
GetDocumentText() تُعيد النص الحالي للمستند القابل للتحرير كسلسلة. استرجع النص الأصلي عبر EditableDocument.GetDocumentText()، قم بإجراء التعديلات (مثلاً استبدال قيمة عمود)، واحفظ النتيجة في سلسلة جديدة. هنا يمكنك edit CSV .NET دون التعامل مع تدفقات الملفات منخفضة المستوى.
string originalTextContent = beforeEdit.GetContent();
string updatedTextContent = originalTextContent.Replace("SsangYong", "Chevrolet").Replace("Kyron", "Camaro");
List<IHtmlResource> allResources = beforeEdit.AllResources;
الخطوة 6: إنشاء EditableDocument بالمحتوى المحدث
قم بلف السلسلة المعدلة مرة أخرى داخل EditableDocument. هذه الخطوة تُنهي التغييرات وتُجهّز الكائن للحفظ بأي صيغة مدعومة.
EditableDocument afterEdit = EditableDocument.FromMarkup(updatedTextContent, allResources);
الخطوة 7: إنشاء خيارات حفظ CSV
DelimitedTextSaveOptions يحدد كيفية كتابة المحتوى المُحرّر مرة أخرى إلى ملف CSV. عندما تكون مستعدًا لحفظ التغييرات، قم بتكوين DelimitedTextSaveOptions. يمكنك تحديد نفس الفاصل، فاصل مختلف، أو حتى تغيير نمط نهاية السطر.
Options.DelimitedTextSaveOptions csvSaveOptions = new DelimitedTextSaveOptions(",");
csvSaveOptions.Encoding = System.Text.Encoding.UTF8;
الخطوة 8: إنشاء خيارات حفظ TSV
إذا كنت بحاجة إلى نسخة مفصولة بعلامة تبويب، ما عليك سوى تغيير الفاصل إلى \t. يمكن حفظ نفس EditableDocument عدة مرات بخيارات مختلفة.
Options.DelimitedTextSaveOptions tsvSaveOptions = new DelimitedTextSaveOptions("\t");
tsvSaveOptions.Encoding = System.Text.Encoding.UTF8;
الخطوة 9: إنشاء خيارات حفظ جدول البيانات
SpreadsheetSaveOptions يضبط تصدير المستند إلى صيغ متوافقة مع Excel مثل .xlsx. يتيح لك GroupDocs.Editor أيضًا تصدير البيانات المُحررة إلى صيغة متوافقة مع Excel (.xlsx). تتعامل فئة SpreadsheetSaveOptions تلقائيًا مع أنواع الأعمدة، الصيغ، وتنسيق الخلايا.
Options.SpreadsheetSaveOptions cellsSaveOptions = new SpreadsheetSaveOptions(SpreadsheetFormats.Xlsm);
الخطوة 10: إعداد مسارات الحفظ
حدد مسارات إخراج مميزة لكل صيغة. يساعد استخدام تسميات واضحة (مثل output.csv، output.tsv، output.xlsx) في تنظيم مشروعك.
string outputCsvPath = Path.Combine(Constants.GetOutputDirectoryPath(inputFilePath), Path.GetFileNameWithoutExtension(inputFilePath) + ".csv");
string outputTsvPath = Path.Combine(Constants.GetOutputDirectoryPath(inputFilePath), Path.GetFileNameWithoutExtension(inputFilePath) + ".tsv");
string outputCellsPath = Path.Combine(Constants.GetOutputDirectoryPath(inputFilePath), Path.GetFileNameWithoutExtension(inputFilePath) + ".xlsm");
الخطوة 11: حفظ المستند المُحرّر
Save() يكتب المستند إلى القرص باستخدام خيارات الحفظ المقدمة. استدعِ EditableDocument.Save مع الخيارات المناسبة لكل صيغة مستهدفة. تقوم API بكتابة الملف مباشرة إلى القرص، مع الحفاظ على الترميز الأصلي ما لم تقم بتغييره.
editor.Save(afterEdit, outputCsvPath, csvSaveOptions);
editor.Save(afterEdit, outputTsvPath, tsvSaveOptions);
editor.Save(afterEdit, outputCellsPath, cellsSaveOptions);
الخطوة 12: تحرير مثيلات EditableDocument
كلا من Editor و EditableDocument يطبقان IDisposable. تحريرهما يحرّر مقابض الملفات والموارد غير المدارة، وهو أمر حاسم عند معالجة العديد من الملفات في مهمة دفعة.
beforeEdit.Dispose();
afterEdit.Dispose();
}
System.Console.WriteLine("WorkingWithDsv routine has successfully finished");
المشكلات الشائعة والحلول
| المشكلة | سبب حدوثها | الحل |
|---|---|---|
| أقواس إضافية غير متوقعة | قد يتعامل محلل CSV الافتراضي مع الفواصل المدمجة كفواصل. | قم بتعيين EscapeMode = EscapeMode.DoubleQuote في DelimitedTextEditOptions. |
| ارتفاع استهلاك الذاكرة للملف الكبير | تحميل ملف بحجم 500 ميغابايت دون استخدام البث. | استخدم Editor.Load مع LoadOptions التي تمكّن التحميل الكسول. |
| عدم تطابق الترميز | الملف المصدر يستخدم UTF‑16 لكن الخيارات الافتراضية هي UTF‑8. | قم بتعيين Encoding = Encoding.Unicode صراحةً في خيارات الحفظ. |
الأسئلة المتكررة
Q: هل يمكنني استخدام GroupDocs.Editor for .NET لتحرير ملفات CSV الكبيرة؟
A: نعم، تقوم API ببث البيانات ويمكنها معالجة ملفات أكبر من 1 جيجابايت دون تحميل المستند بالكامل في الذاكرة.
Q: هل يدعم GroupDocs.Editor for .NET صيغ DSV أخرى غير CSV و TSV؟
A: بالتأكيد – أي فاصل أحادي الحرف (مثل الأنبوب | أو الفاصلة المنقوطة ;) مدعوم طالما قمت بتحديده في DelimitedTextEditOptions.
Q: هل يمكن تخصيص الترميز عند حفظ ملفات DSV؟
A: نعم، يمكنك تعيين خاصية Encoding في DelimitedTextSaveOptions إلى UTF‑8 أو UTF‑16 أو ISO‑8859‑1 أو أي Encoding في .NET تحتاجه.
Q: هل يمكنني تحويل ملف CSV إلى جدول Excel باستخدام GroupDocs.Editor for .NET؟
A: نعم – بعد التحرير، استخدم ببساطة SpreadsheetSaveOptions لتصدير المحتوى كملف عمل .xlsx.
Q: أين يمكنني العثور على مزيد من الوثائق حول GroupDocs.Editor for .NET؟
A: مراجع API التفصيلية وعينات الكود متاحة here.
آخر تحديث: 2026-06-06
تم الاختبار مع: GroupDocs.Editor 23.10 for .NET
المؤلف: GroupDocs