قراءة وكتابة ملفات DBF

مقدمة

DBF (ملف قاعدة البيانات) هو تنسيق ملف قاعدة بيانات قديم تم تقديمه في الأصل بواسطة dBASE في أوائل الثمانينيات. على الرغم من قدم التنسيق، لا تزال ملفات DBF مستخدمة على نطاق واسع في العديد من الصناعات لتخزين البيانات المنظمة، لا سيما في المحاسبة ونظم المعلومات الجغرافية (GIS) والتطبيقات المتخصصة الأخرى. يتيح لك Aspose.Cells دمج هذه الملفات القديمة في سير عمل جداول البيانات الحديثة لـ Node.js via C++ بسلاسة.

تدعم المكتبة كلاً من قراءة وكتابة ملفات DBF، مما يمنحك القدرة على:

  • استيراد البيانات من ملفات DBF الموجودة إلى كائنات Workbook في Aspose.Cells لمزيد من المعالجة أو التحويل إلى تنسيقات أخرى.
  • إنشاء ملفات DBF جديدة من الصفر أو عن طريق تحويل البيانات من تنسيقات جداول بيانات أخرى.
  • الحفاظ على تعريفات الحقول وأنواع البيانات وهياكل السجلات عند نقل البيانات من وإلى تنسيق DBF.

يمكن أيضًا فتح ملفات DBF مباشرة في Microsoft Excel وتطبيقات جداول البيانات الأخرى، مما يجعلها جسرًا مناسبًا بين الأنظمة القديمة وأدوات جداول البيانات الحديثة.

إصدارات وميزات DBF المدعومة

يدعم Aspose.Cells إصدارات تنسيق DBF التالية:

  • dBASE III — الإصدار الأصلي والأكثر دعمًا على نطاق واسع من تنسيق DBF.
  • dBASE IV — إصدار موسع يدعم أنواع بيانات إضافية وأحجام حقول أكبر.

الميزات المدعومة

توفر المكتبة دعمًا شاملاً للعمليات التالية:

  • قراءة بيانات DBF في كائن Workbook، مع الحفاظ على جميع السجلات وتعريفات الحقول.
  • كتابة بيانات المصنف مرة أخرى بتنسيق DBF للتصدير إلى التطبيقات المتوافقة مع dBASE.
  • التعامل مع أنواع البيانات الشائعة المستخدمة في ملفات DBF، بما في ذلك الحقول الحرفية والرقمية والتاريخية والمنطقية.
  • الحفاظ على تعريفات الحقول مثل اسم الحقل ونوعه وطوله أثناء عمليات القراءة/الكتابة.

القيود والاعتبارات

عند العمل مع ملفات DBF، يجب مراعاة القيود التالية:

  • الحد الأقصى لعدد الحقول لكل ملف هو 128.
  • الحد الأقصى لحجم السجل هو 4000 بايت.
  • أسماء الحقول محدودة بـ 10 أحرف، ويجب أن تكون بأحرف كبيرة، ولا يمكن أن تحتوي على مسافات.
  • يتم تخزين قيم التاريخ في ملفات DBF بتنسيق YYYYMMDD.
  • قد يختلف ترميز الأحرف اعتمادًا على التطبيق المصدر (عادةً Windows-1252 أو صفحات رموز OEM).

قراءة ملف DBF

يجعل Aspose.Cells من السهل تحميل البيانات من ملف DBF في كائن Workbook. تستخدم المكتبة فئة LoadOptions لتحديد تنسيق المصدر، مما يضمن تفسير البيانات بشكل صحيح أثناء عملية التحميل.

قراءة ملف DBF باستخدام Aspose.Cells

لقراءة ملف DBF، تحتاج إلى إنشاء مثيل LoadOptions، وتعيين خاصية LoadFormat الخاصة به إلى LoadFormat.Dbf، وتمريرها إلى مُنشئ Workbook مع مسار الملف. بمجرد التحميل، تصبح البيانات قابلة للوصول من خلال مجموعة Worksheets، حيث يمكنك التكرار عبر الخلايا واستخراج القيم ومعالجة البيانات حسب الحاجة.

يوضح المثال التالي كيفية تحميل ملف DBF موجود في Aspose.Cells، والوصول إلى ورقة العمل الأولى، وقراءة قيم الخلايا.

let sb = "";

const maxRow = cells.getMaxDataRow();
const maxCol = cells.getMaxDataColumn();

for (let i = 0; i <= maxRow; i++)
{
    for (let j = 0; j <= maxCol; j++)
    {
        const cell = cells.get(i, j);
        const value = cell.getStringValue();
        sb += "|" + value;
    }
    sb += "|" + "\n";
}

console.log(sb);

const outputPath = path.join(dataDir, "output.xlsx");
workbook.save(outputPath, AsposeCells.SaveFormat.Xlsx);

console.log("DBF file loaded successfully. Converted XLSX saved at: " + outputPath);

كتابة ملف DBF

تتبع كتابة البيانات إلى ملف DBF نمطًا مشابهًا لحفظ أي تنسيق جدول بيانات آخر باستخدام Aspose.Cells. يمكنك إنشاء مصنف أو تحميله، وتعبئة ورقة العمل بالبيانات، ثم استدعاء طريقة save مع تحديد SaveFormat.Dbf كتنسيق هدف.

كتابة ملف DBF باستخدام Aspose.Cells

لإنشاء ملف DBF، اتبع الخطوات التالية:

  1. أنشئ مثيل Workbook جديد.
  2. الوصول إلى ورقة العمل الأولى من مجموعة Worksheets.
  3. تعبئة ورقة العمل ببياناتك، بما في ذلك العناوين في الصف الأول والسجلات في الصفوف اللاحقة.
  4. استدعاء طريقة workbook.save، وتمرير مسار الملف و SaveFormat.Dbf كمعاملات.

يوضح المثال التالي كيفية إنشاء ملف DBF جديد من الصفر. يقوم بتعبئة ورقة العمل ببيانات عينة تحتوي على أنواع بيانات مختلفة (سلاسل وأرقام وتواريخ) لتوضيح كيفية التعامل مع أنواع الحقول عند التصدير إلى تنسيق DBF.

const AsposeCells = require("aspose.cells");
const path = require("path");
const fs = require("fs");

const outputDir = "C:\\Output\\";
const filePath = path.join(outputDir, "output.dbf");

if (!fs.existsSync(outputDir)) {
    fs.mkdirSync(outputDir, { recursive: true });
}

const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
const cells = worksheet.getCells();

// رؤوس الأعمدة
cells.get(0, 0).putValue("ID");
cells.get(0, 1).putValue("Name");
cells.get(0, 2).putValue("Department");
cells.get(0, 3).putValue("Salary");
cells.get(0, 4).putValue("HireDate");

// صف البيانات 1
cells.get(1, 0).putValue(101);
cells.get(1, 1).putValue("John Smith");
cells.get(1, 2).putValue("Engineering");
cells.get(1, 3).putValue(75000.50);
cells.get(1, 4).putValue(new Date(2020, 2, 15));

// صف البيانات 2
cells.get(2, 0).putValue(102);
cells.get(2, 1).putValue("Jane Doe");
cells.get(2, 2).putValue("Marketing");
cells.get(2, 3).putValue(68000.75);
cells.get(2, 4).putValue(new Date(2019, 6, 22));

// صف البيانات 3
cells.get(3, 0).putValue(103);
cells.get(3, 1).putValue("Bob Johnson");
cells.get(3, 2).putValue("Finance");
cells.get(3, 3).putValue(82000.00);
cells.get(3, 4).putValue(new Date(2021, 0, 10));

// صف البيانات 4
cells.get(4, 0).putValue(104);
cells.get(4, 1).putValue("Alice Brown");
cells.get(4, 2).putValue("Human Resources");
cells.get(4, 3).putValue(71000.25);
cells.get(4, 4).putValue(new Date(2018, 10, 5));

// صف البيانات 5
cells.get(5, 0).putValue(105);
cells.get(5, 1).putValue("Charlie Wilson");
cells.get(5, 2).putValue("Operations");
cells.get(5, 3).putValue(79500.80);
cells.get(5, 4).putValue(new Date(2022, 4, 30));

// تعيين عرض الأعمدة لتحسين القراءة
worksheet.getCells().setColumnWidth(0, 8);
worksheet.getCells().setColumnWidth(1, 20);
worksheet.getCells().setColumnWidth(2, 20);
worksheet.getCells().setColumnWidth(3, 12);
worksheet.getCells().setColumnWidth(4, 14);

workbook.save(filePath, AsposeCells.SaveFormat.Dbf);

اعتبارات نوع البيانات والتنسيق

عند نقل البيانات بين Aspose.Cells وتنسيق DBF، فإن فهم كيفية تعيين أنواع البيانات بين النظامين أمر مهم لضمان سلامة البيانات.

أنواع الخلايا إلى أنواع حقول DBF

يتم تحويل قيم خلايا Aspose.Cells تلقائيًا إلى أنواع حقول DBF المناسبة عند الحفظ:

  • يتم تعيين السلاسل النصية إلى حقول الأحرف (C).
  • يتم تعيين القيم العددية (الأعداد الصحيحة والعشرية) إلى الحقول العددية (N).
  • يتم تعيين قيم التاريخ إلى حقول التاريخ (D) بتنسيق YYYYMMDD.
  • يتم تعيين القيم المنطقية إلى الحقول المنطقية (L).

الترميز

قد تستخدم ملفات DBF ترميزات أحرف مختلفة اعتمادًا على التطبيق الذي أنشأها. يتعامل Aspose.Cells مع الترميز بشفافية في معظم الحالات، ولكن إذا واجهت مشكلات في عرض الأحرف، فقد تحتاج إلى التحقق من ترميز الملف المصدر.

قواعد أسماء الحقول

يجب أن تلتزم أسماء حقول DBF بالقواعد التالية:

  • الحد الأقصى للطول 10 أحرف.
  • يجب أن تبدأ بحرف.
  • لا يمكن أن تحتوي على مسافات أو أحرف خاصة.
  • يتم تخزينها بأحرف كبيرة بغض النظر عن الحالة المستخدمة في الإدخال.

التحقق من الناتج

بعد كتابة ملف DBF، يمكنك التحقق من النتيجة عن طريق فتحه في Microsoft Excel أو أي تطبيق متوافق مع dBASE. يجب أن تظهر البيانات في تخطيط جدولي مع أسماء الحقول كرؤوس أعمدة، والسجلات معبأة وفقًا للبيانات التي قدمتها.

التحويل بين DBF والتنسيقات الأخرى

إحدى أكثر حالات الاستخدام العملية لقراءة وكتابة ملفات DBF باستخدام Aspose.Cells هي تحويل البيانات بين تنسيق DBF وتنسيقات جداول البيانات الحديثة مثل XLSX أو XLS أو CSV. نظرًا لأن Aspose.Cells يدعم مجموعة واسعة من التنسيقات، يمكنك بسهولة تحميل ملف DBF وإعادة حفظه بأي تنسيق مدعوم آخر، أو العكس.

على سبيل المثال، يمكنك قراءة ملف DBF، وتطبيق التنسيق أو الحسابات باستخدام واجهة برمجة تطبيقات Aspose.Cells، ثم حفظ النتيجة كملف XLSX لتوزيعه على المستخدمين الذين يعملون مع تطبيقات جداول البيانات الحديثة. وعلى العكس من ذلك، يمكنك أخذ البيانات من ملف XLSX أو CSV وتصديرها إلى تنسيق DBF للتكامل مع الأنظمة القديمة.