يساعد تصور جداول زمنية للمشروعات الفرق على البقاء متوافقة والالتزام بالمواعيد النهائية. Conholdate.Total for Java يوفر مجموعة تطوير برمجيات قوية تجعل من السهل إنشاء مخطط جانت في Java ببضع أسطر من الشيفرة فقط. في هذا الدليل ستتعرف على كيفية إعداد المكتبة، تعبئة بيانات المهام في ورقة عمل، تحويل مخطط شريطي مكدس إلى مخطط زمني على نمط جانت، وتصدير النتيجة إلى Excel.
إعداد Conholdate.Total لـ Java
قبل أن تبدأ بالبرمجة، تأكد من أن لديك Java 17 أو أحدث وبيئة تطوير متوافقة مع Maven. أضف مستودع Maven الخاص بـ Conholdate واعتماد SDK إلى ملف pom.xml الخاص بك:
<repositories>
<repository>
<id>conholdate-repo</id>
<name>Conholdate Maven Repository</name>
<url>https://repository.conholdate.com/repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.9</version>
<type>pom</type>
</dependency>
يمكنك أيضًا تنزيل أحدث ملفات JAR مباشرةً من صفحة التحميل. بمجرد أن يكون SDK على مسار الفئة الخاص بك، فأنت جاهز لبدء بناء المخطط.
بناءه خطوة بخطوة: إنشاء مخطط جانت في Java
الخطوة 1: إنشاء دفتر العمل وتعبئة بيانات المهمة
مخطط جانت المبني بهذه الطريقة هو في الواقع مخطط شريطي مكدس يُطبّق فوق بيانات ورقة العمل، لذا فإن الخطوة الأولى هي إنشاء Workbook، والحصول على أول Worksheet، وتعبئة أسماء المهام، وإزاحات البداية، والمدة التي سيقرأها المخطط.
com.aspose.cells.Workbook workbook = new com.aspose.cells.Workbook();
com.aspose.cells.Worksheet sheet = workbook.getWorksheets().get(0);
com.aspose.cells.Cells cells = sheet.getCells();
cells.get("A1").putValue("Task");
cells.get("C1").putValue("Duration (Days)");
cells.get("D1").putValue("Start Offset (Days)");
cells.get("A2").putValue("Requirement Analysis");
cells.get("C2").putValue(5);
cells.get("D2").putValue(0);
cells.get("A3").putValue("Design");
cells.get("C3").putValue(7);
cells.get("D3").putValue(5);
cells.get("A4").putValue("Implementation");
cells.get("C4").putValue(24);
cells.get("D4").putValue(12);
cells.get("A5").putValue("Testing");
cells.get("C5").putValue(15);
cells.get("D5").putValue(36);
cells.get("A6").putValue("Deployment");
cells.get("C6").putValue(2);
cells.get("D6").putValue(51);
العمود A يحتوي على اسم المهمة، والعمود C يحتوي على عدد الأيام التي تستغرقها كل مهمة، والعمود D يحتوي على عدد الأيام بعد بدء المشروع التي يبدأ فيها كل مهمة. السلسلتان في المخطط (إزاحة البدء والمدة) تُقرأ مباشرةً من العمودين D و C.
الخطوة 2: إضافة مخطط شريطي مكدس وتكوين السلسلة
مع وجود البيانات، أضف مخطط BAR_STACKED إلى ورقة العمل وربط سلسلته. تدفع سلسلة إزاحة البداية كل شريط مهمة إلى اليمين؛ وتقوم سلسلة المدة برسم شريط المهمة المرئي فوقها.
int chartIndex = sheet.getCharts().add(com.aspose.cells.ChartType.BAR_STACKED, 7, 0, 30, 10);
com.aspose.cells.Chart chart = sheet.getCharts().get(chartIndex);
chart.getTitle().setText("Gantt Chart");
// Add offset and duration as series
chart.getNSeries().add("D2:D6", true); // Start Offset
chart.getNSeries().add("C2:C6", true); // Duration
// Set task names as categories
chart.getNSeries().setCategoryData("A2:A6");
المخطط مثبت في ورقة العمل عند الصف 7، العمود 0، ويمتد عبر 30 صفًا و 10 أعمدة.
الخطوة 3: تنسيق المخطط ليظهر كمخطط جانت
الحيلة لجعل مخطط الأعمدة المتراكم يُقرأ كمخطط جانت هي جعل سلسلة الإزاحة غير مرئية بحيث تظهر أشرطة المدة فقط، وتطفو في الموضع الابتدائي الصحيح.
// Make offset bars invisible
chart.getNSeries().get(0).getArea().setFormatting(com.aspose.cells.FormattingType.NONE);
// Style duration bars
chart.getNSeries().get(1).getArea().setFormatting(com.aspose.cells.FormattingType.CUSTOM);
chart.getNSeries().get(1).getArea().setForegroundColor(com.aspose.cells.Color.getSteelBlue());
chart.getNSeries().get(1).getDataLabels().setShowValue(true);
الخطوة 4: تكوين المحاور، وسيلة الإيضاح، والحجم
اعكس محور الفئات بحيث يظهر أول مهمة في الأعلى، وضع تسميات لكلا المحورين، وأوقف إظهار وسيلة الإيضاح لأن هناك سلسلة واحدة ذات معنى فقط للقراءة.
// Axis settings
chart.getCategoryAxis().setPlotOrderReversed(true);
chart.getCategoryAxis().getTitle().setText("Tasks");
chart.getValueAxis().getTitle().setText("Days from Start");
chart.getValueAxis().getMajorGridLines().setVisible(true);
// Hide legend
chart.setShowLegend(false);
// Resize chart
chart.getChartObject().setWidth(700);
chart.getChartObject().setHeight(400);
الخطوة 5: حفظ المصنف
أخيرًا، احفظ دفتر العمل. يدعم SDK تنسيق XLSX، وXLS، وغيرها من التنسيقات المذكورة في تعداد SaveFormat.
// Save the result
workbook.save("GanttChartResult.xlsx", com.aspose.cells.SaveFormat.XLSX);
افتح GanttChartResult.xlsx في Excel (أو أي تطبيق جدول بيانات متوافق) لرؤية مخطط جانت النهائي المدمج في ورقة العمل.
مثال كامل للكود: مخطط جانت Java
يوضح المثال التالي كيفية إنشاء مخطط جانت في Java من البداية إلى النهاية.
public class GanttChartDemo {
public static void main(String[] args) {
// Create the workbook and get the first worksheet
com.aspose.cells.Workbook workbook = new com.aspose.cells.Workbook();
com.aspose.cells.Worksheet sheet = workbook.getWorksheets().get(0);
// Populate task names, durations, and start offsets
com.aspose.cells.Cells cells = sheet.getCells();
cells.get("A1").putValue("Task");
cells.get("C1").putValue("Duration (Days)");
cells.get("D1").putValue("Start Offset (Days)");
cells.get("A2").putValue("Requirement Analysis");
cells.get("C2").putValue(5);
cells.get("D2").putValue(0);
cells.get("A3").putValue("Design");
cells.get("C3").putValue(7);
cells.get("D3").putValue(5);
cells.get("A4").putValue("Implementation");
cells.get("C4").putValue(24);
cells.get("D4").putValue(12);
cells.get("A5").putValue("Testing");
cells.get("C5").putValue(15);
cells.get("D5").putValue(36);
cells.get("A6").putValue("Deployment");
cells.get("C6").putValue(2);
cells.get("D6").putValue(51);
// Add a stacked bar chart that will act as the Gantt chart
int chartIndex = sheet.getCharts().add(com.aspose.cells.ChartType.BAR_STACKED, 7, 0, 30, 10);
com.aspose.cells.Chart chart = sheet.getCharts().get(chartIndex);
chart.getTitle().setText("Gantt Chart");
// Add offset and duration as series
chart.getNSeries().add("D2:D6", true); // Start Offset
chart.getNSeries().add("C2:C6", true); // Duration
// Set task names as categories
chart.getNSeries().setCategoryData("A2:A6");
// Make offset bars invisible
chart.getNSeries().get(0).getArea().setFormatting(com.aspose.cells.FormattingType.NONE);
// Style duration bars
chart.getNSeries().get(1).getArea().setFormatting(com.aspose.cells.FormattingType.CUSTOM);
chart.getNSeries().get(1).getArea().setForegroundColor(com.aspose.cells.Color.getSteelBlue());
chart.getNSeries().get(1).getDataLabels().setShowValue(true);
// Axis settings
chart.getCategoryAxis().setPlotOrderReversed(true);
chart.getCategoryAxis().getTitle().setText("Tasks");
chart.getValueAxis().getTitle().setText("Days from Start");
chart.getValueAxis().getMajorGridLines().setVisible(true);
// Hide legend
chart.setShowLegend(false);
// Resize chart
chart.getChartObject().setWidth(700);
chart.getChartObject().setHeight(400);
// Save the result
workbook.save("GanttChartResult.xlsx", com.aspose.cells.SaveFormat.XLSX);
}
}
ملاحظة: يوضح مثال الشيفرة هذا الوظيفة الأساسية. قبل استخدامه في مشروعك، تأكد من تحديث أي مسارات ملفات وقيم التكوين لتطابق بيئتك الفعلية، وتحقق من أن جميع الاعتمادات المطلوبة مثبتة بشكل صحيح، واختبر بدقة في بيئة التطوير الخاصة بك. إذا واجهت أي مشكلات، يرجى الرجوع إلى الوثائق الرسمية أو التواصل مع فريق الدعم للحصول على المساعدة.
الخلاصة
إنشاء مخطط غانت في Java يصبح بسيطًا مع Conholdate.Total for Java. من خلال ملء بيانات المهام في ورقة عمل، وإضافة مخطط شريطي مكدس، وتنسيق سلسلته ومحاوره، يمكنك إنشاء جداول زمنية ذات مظهر احترافي تُظهر داخل ملف Excel. إخفاء سلسلة إزاحة البداية أثناء تنسيق سلسلة المدة هو التقنية الأساسية التي تحول مخطط شريطي مكدس عادي إلى مخطط غانت. تذكر أن الترخيص التجاري مطلوب للنشر في بيئات الإنتاج؛ يمكنك الحصول على ترخيص مؤقت من صفحة الترخيص المؤقت أو استكشاف تفاصيل التسعير على صفحة التسعير. ابدأ بدمج مخططات غانت في تطبيقاتك اليوم واحرص على إطلاع أصحاب المصلحة على جداول مرئية واضحة.
الأسئلة المتكررة
كيف يمكنني إنشاء مخطط جانت في Java باستخدام Conholdate.Total?
Create a Workbook، add a BAR_STACKED chart to a worksheet، and add two series: a hidden start‑offset series and a visible duration series. Set the task names as category data، style the visible series، and save the workbook. The full code Snippet is provided in this article.
هل يمكنني تصدير مخطط جانت إلى صيغ غير Excel?
نعم. نظرًا لأن المخطط مدمج في مصنف، يمكنك حفظ الملف باستخدام أي قيمة من تعداد SaveFormat، مثل XLSX أو XLS أو ODS. راجع الوثائق الرسمية للحصول على القائمة الكاملة.
ما الترخيص المطلوب للاستخدام في الإنتاج؟
يتطلب الترخيص التجاري. يمكنك طلب ترخيص مؤقت من صفحة الترخيص المؤقت ومراجعة الأسعار على صفحة التسعير.
كيف يمكنني تحسين الأداء لمخططات جانت الكبيرة؟
حافظ على نطاق البيانات المشار إليه من قبل كل سلسلة بأضيق ما يمكن، وتجنب إعادة حساب المصنف غير الضرورية، وحدّ استدعاءات التنسيق إلى السلاسل والمحاور التي تحتاجها فعليًا. الحفاظ على عدد المهام لكل مخطط بشكل معقول يساعد أيضًا في تسريع عملية العرض لملفات المشاريع الكبيرة.
