العمل مع Excel في Java: Apache POI والبدائل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع Excel في Java: نظرة عامة على المكتبات وأمثلة عملية

في التطوير المؤسسي بلغة Java، غالبًا ما تنشأ الحاجة إلى إنشاء وقراءة وتعديل جداول بيانات Excel برمجيًا. قد يشمل ذلك إنشاء التقارير، استيراد البيانات من أنظمة خارجية، أو تصدير نتائج الحسابات. في هذه المقالة، سنستعرض المكتبات الرئيسية للعمل مع Excel في Java، وميزاتها، بالإضافة إلى تقديم أمثلة توضيحية للكود.



لماذا Java وليس Python؟

على الرغم من أن موقعنا يُسمى PythonLib، إلا أن Java لا تزال واحدة من أكثر اللغات شيوعًا لتطوير المؤسسات. تستخدم العديد من الشركات Java بنشاط للتطبيقات الخادمة، ويعد التكامل مع Excel مهمة مطلوبة. سيكون فهم كيفية العمل مع Excel في Java مفيدًا لكل من المطورين المبتدئين وذوي الخبرة.



المكتبات الرئيسية للعمل مع Excel في Java

توجد عدة مكتبات ناضجة، لكل منها نقاط قوتها:



  • Apache POI — المكتبة الأكثر شيوعًا ووظيفية. تدعم صيغ .xls (HSSF) و .xlsx (XSSF). تتيح إنشاء وقراءة وتعديل الملفات، وتدعم الصيغ والأنماط والرسوم البيانية.
  • JExcelApi (jxl) — مكتبة أخف وزنًا، تدعم فقط الصيغة القديمة .xls. مناسبة للمهام البسيطة، لكنها لم تتطور منذ عام 2009.
  • Apache POI + XSSF/SXSSF — إمكانيات متقدمة للعمل مع الملفات الكبيرة. تتيح SXSSF (Streaming) معالجة ملايين الصفوف باستهلاك منخفض للذاكرة.
  • Docx4j — مكتبة للعمل مع Office Open XML، يمكن استخدامها لـ .xlsx، لكنها تُستخدم غالبًا لـ Word.


بدء العمل مع Apache POI

لإضافة المكتبة إلى مشروع Maven، أضف التبعيات التالية إلى pom.xml:



<!-- للعمل مع .xls (HSSF) --><dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi</artifactId>    <version>5.2.5</version></dependency>

<!-- للعمل مع .xlsx (XSSF) --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.5</version></dependency>


إذا كنت تستخدم Gradle، أضف الأسطر إلى build.gradle:



implementation 'org.apache.poi:poi:5.2.5'implementation 'org.apache.poi:poi-ooxml:5.2.5'


مثال: إنشاء ملف Excel بجدول

لننظر إلى مثال بسيط لإنشاء ملف .xlsx يحتوي على بيانات الموظفين.



import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;

public class ExcelWriter { public static void main(String[] args) { // إنشاء كتاب جديد try (Workbook workbook = new XSSFWorkbook()) { // إنشاء ورقة Sheet sheet = workbook.createSheet("الموظفون");

// إنشاء صف العنوان Row headerRow = sheet.createRow(0); String[] columns = {"المعرف", "الاسم", "المنصب", "الراتب"}; for (int i = 0; i < columns.length; i++) { Cell cell = headerRow.createCell(i); cell.setCellValue(columns[i]); // جعل العنوان عريضًا CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setBold(true); style.setFont(font); cell.setCellStyle(style); }

// تعبئة البيانات Object[][] data = { {1, "إيفان إيفانوف", "مطور", 150000}, {2, "بيتر بيتروف", "محلل", 120000}, {3, "سيدور سيدوروف", "مدير", 180000}

توصيات