การแสดงภาพไทม์ไลน์ของโครงการช่วยให้ทีมทำงานสอดคล้องกันและตรงตามกำหนดเวลา. Conholdate.Total for Java มี SDK ที่แข็งแกร่งซึ่งทำให้การสร้าง Gantt Chart ใน Java ง่ายดายด้วยเพียงไม่กี่บรรทัดของโค้ด. ในคู่มือนี้คุณจะได้เห็นวิธีตั้งค่าห้องสมุด, เติมข้อมูลงานในแผ่นงาน, แปลงแผนภูมิแท่งแบบซ้อนเป็นไทม์ไลน์สไตล์แกนท์, และส่งออกผลลัพธ์เป็น Excel.

การตั้งค่า Conholdate.Total สำหรับ Java

ก่อนที่คุณจะเริ่มเขียนโค้ด ให้ตรวจสอบว่าคุณมี Java 17 หรือใหม่กว่าและ IDE ที่รองรับ 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 อยู่ใน classpath ของคุณ คุณพร้อมที่จะเริ่มสร้างแผนภูมิแล้ว.

สร้างอย่างเป็นขั้นตอน: สร้างแผนภูมิแกนท์ใน Java

ขั้นตอนที่ 1: สร้าง Workbook และใส่ข้อมูลงาน

แผนภูมิ Gantt ที่สร้างแบบนี้จริง ๆ แล้วเป็นแผนภูมิแท่งแบบซ้อนกันซึ่งวางอยู่บนข้อมูลของแผ่นงาน ดังนั้นขั้นตอนแรกคือการสร้าง 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);

Column A เก็บชื่องาน, column C เก็บจำนวนวันที่แต่ละงานใช้, และ column 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 และรูปแบบอื่น ๆ ที่ระบุใน enum SaveFormat.

// Save the result
workbook.save("GanttChartResult.xlsx", com.aspose.cells.SaveFormat.XLSX);

เปิด GanttChartResult.xlsx ใน Excel (หรือแอปสเปรดชีตที่เข้ากันได้) เพื่อดูแผนภูมิ Gantt ที่เสร็จสมบูรณ์ซึ่งฝังอยู่ในแผ่นงาน.

ตัวอย่างโค้ดเต็ม: ตัวอย่างแผนภูมิแกนท์ Java

ตัวอย่างต่อไปนี้แสดงวิธีสร้างแผนภูมิ Gantt ใน 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);
    }
}

หมายเหตุ: ตัวอย่างโค้ดนี้แสดงการทำงานหลัก ก่อนนำไปใช้ในโครงการของคุณ โปรดตรวจสอบให้แน่ใจว่าได้อัปเดตเส้นทางไฟล์และค่าการกำหนดค่าต่าง ๆ ให้ตรงกับสภาพแวดล้อมจริงของคุณ ตรวจสอบว่าขึ้นตอนการพึ่งพาที่จำเป็นทั้งหมดได้ติดตั้งอย่างถูกต้อง และทำการทดสอบอย่างละเอียดในสภาพแวดล้อมการพัฒนา หากคุณพบปัญหาใด ๆ โปรดดูที่ เอกสารอย่างเป็นทางการ หรือ ติดต่อทีมสนับสนุนที่ ทีมสนับสนุน เพื่อขอความช่วยเหลือ.

สรุป

การสร้างแผนภูมิ Gantt ใน Java กลายเป็นเรื่องง่ายด้วย Conholdate.Total for Java โดยการใส่ข้อมูลงานลงในแผ่นงาน, เพิ่มแผนภูมิแท่งแบบสแต็ก, และจัดรูปแบบซีรีส์และแกน, คุณสามารถสร้างไทม์ไลน์ที่ดูเป็นมืออาชีพซึ่งอยู่ภายในไฟล์ Excel การซ่อนซีรีส์เริ่มต้น‑ออฟเซ็ตขณะจัดรูปแบบซีรีส์ระยะเวลาเป็นเทคนิคสำคัญที่ทำให้แผนภูมิแท่งสแต็กธรรมดาแปลงเป็นแผนภูมิ Gantt จำไว้ว่าต้องมีใบอนุญาตเชิงพาณิชย์สำหรับการใช้งานในสภาพแวดล้อมการผลิต; คุณสามารถรับใบอนุญาตชั่วคราวได้จาก หน้าลิขสิทธิ์ชั่วคราว หรือสำรวจรายละเอียดราคาได้ที่ หน้าราคา เริ่มผสานแผนภูมิ Gantt เข้ากับแอปพลิเคชันของคุณวันนี้และทำให้ผู้มีส่วนได้ส่วนเสียของคุณรับรู้ด้วยตารางเวลาที่ชัดเจนในรูปแบบภาพ.

FAQs

ฉันจะสร้างแผนภูมิ Gantt ใน Java โดยใช้ Conholdate.Total อย่างไร?
สร้าง Workbook เพิ่มแผนภูมิ BAR_STACKED ลงในแผ่นงาน และเพิ่มสองชุดข้อมูล: ชุดข้อมูลเริ่มต้นที่ซ่อนอยู่และชุดข้อมูลระยะเวลาที่มองเห็นได้ ตั้งชื่องานเป็นข้อมูลประเภทหมวดหมู่ ปรับสไตล์ให้กับชุดข้อมูลที่มองเห็นได้ แล้วบันทึก workbook โค้ด Snippet มีให้ในบทความนี้.

ฉันสามารถส่งออกแผนภูมิ Gantt ไปยังรูปแบบอื่นนอกจาก Excel ได้หรือไม่?
ใช่. เนื่องจากแผนภูมิถูกฝังอยู่ในเวิร์กบุ๊ก คุณสามารถบันทึกไฟล์โดยใช้ค่าจาก enum SaveFormat ใดก็ได้ เช่น XLSX, XLS หรือ ODS. ดู เอกสารอย่างเป็นทางการ สำหรับรายการทั้งหมด.

ต้องการใบอนุญาตอะไรสำหรับการใช้งานในผลิตภัณฑ์?
จำเป็นต้องมีใบอนุญาตเชิงพาณิชย์ คุณสามารถขอใบอนุญาตชั่วคราวได้จาก หน้าลิขสิทธิ์ชั่วคราว และตรวจสอบราคาได้ที่ หน้าราคา.

ฉันจะปรับปรุงประสิทธิภาพสำหรับแผนภูมิ Gantt ขนาดใหญ่ได้อย่างไร?
ให้ช่วงข้อมูลที่อ้างอิงโดยแต่ละซีรีส์แคบที่สุดเท่าที่จะเป็นไปได้, หลีกเลี่ยงการคำนวณซ้ำของเวิร์กบุ๊กที่ไม่จำเป็น, และจำกัดการเรียกใช้การจัดรูปแบบไปยังซีรีส์และแกนที่คุณต้องการจริงๆ การรักษาจำนวนงานต่อแผนภูมิให้เหมาะสมก็ช่วยให้การเรนเดอร์เร็วขึ้นสำหรับไฟล์โครงการขนาดใหญ่.

อ่านเพิ่มเติม