Việc trực quan hoá thời gian dự án giúp các nhóm duy trì sự đồng bộ và đáp ứng thời hạn. Conholdate.Total for Java cung cấp một SDK mạnh mẽ giúp dễ dàng tạo biểu đồ Gantt trong Java chỉ với vài dòng mã. Trong hướng dẫn này, bạn sẽ thấy cách thiết lập thư viện, điền dữ liệu nhiệm vụ vào bảng tính, chuyển biểu đồ cột chồng thành dòng thời gian kiểu Gantt, và xuất kết quả ra Excel.
Cài đặt Conholdate.Total cho Java
Trước khi bắt đầu viết mã, hãy đảm bảo bạn có Java 17 hoặc mới hơn và một IDE tương thích với Maven. Thêm kho Maven của Conholdate và phụ thuộc SDK vào tệp pom.xml của bạn:
<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>
Bạn cũng có thể tải xuống các JAR mới nhất trực tiếp từ trang tải xuống. Khi SDK đã có trong classpath của bạn, bạn đã sẵn sàng để bắt đầu xây dựng biểu đồ.
Xây dựng từng bước: Tạo biểu đồ Gantt trong Java
Bước 1: Tạo Workbook và Điền Dữ liệu Nhiệm vụ
Biểu đồ Gantt được xây dựng theo cách này thực chất là một biểu đồ cột xếp chồng được đặt lên trên dữ liệu bảng tính, vì vậy bước đầu tiên là tạo Workbook, lấy Worksheet đầu tiên và điền vào tên nhiệm vụ, độ lệch bắt đầu và thời lượng mà biểu đồ sẽ đọc từ.
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);
Cột A chứa tên nhiệm vụ, cột C chứa số ngày mỗi nhiệm vụ mất, và cột D chứa số ngày sau khi dự án bắt đầu mà mỗi nhiệm vụ bắt đầu. Hai chuỗi của biểu đồ (độ lệch bắt đầu và thời lượng) được đọc trực tiếp từ các cột D và C.
Bước 2: Thêm biểu đồ cột chồng và cấu hình chuỗi
Với dữ liệu đã sẵn sàng, thêm một biểu đồ BAR_STACKED vào bảng tính và thiết lập các chuỗi của nó. Chuỗi offset bắt đầu đẩy mỗi thanh nhiệm vụ sang bên phải; chuỗi thời lượng vẽ thanh nhiệm vụ hiển thị lên trên nó.
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");
Biểu đồ được gắn vào bảng tính tại hàng 7, cột 0, và trải dài 30 hàng và 10 cột.
Bước 3: Định dạng biểu đồ để trông giống biểu đồ Gantt
Mánh khóe để biểu đồ cột chồng hiển thị như biểu đồ Gantt là làm cho chuỗi offset trở nên ẩn, chỉ hiển thị các thanh thời lượng, nổi lên ở vị trí bắt đầu chính xác.
// 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);
Bước 4: Cấu hình Trục, Chú giải và Kích thước
Đảo ngược trục danh mục sao cho nhiệm vụ đầu tiên xuất hiện ở trên cùng, gắn nhãn cho cả hai trục và tắt chú giải vì chỉ có một chuỗi có ý nghĩa để đọc.
// 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);
Bước 5: Lưu Workbook
Cuối cùng, lưu workbook. SDK hỗ trợ XLSX, XLS và các định dạng khác được liệt kê trong enum SaveFormat.
// Save the result
workbook.save("GanttChartResult.xlsx", com.aspose.cells.SaveFormat.XLSX);
Mở GanttChartResult.xlsx trong Excel (hoặc bất kỳ ứng dụng bảng tính tương thích nào) để xem biểu đồ Gantt đã hoàn thiện được nhúng trong bảng tính.
Ví dụ mã hoàn chỉnh: Biểu đồ Gantt Java
Ví dụ sau đây trình bày cách tạo biểu đồ Gantt trong Java từ đầu đến cuối.
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);
}
}
Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật mọi đường dẫn tệp và giá trị cấu hình để phù hợp với môi trường thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.
Kết luận
Tạo biểu đồ Gantt trong Java trở nên đơn giản với Conholdate.Total for Java. Bằng cách điền dữ liệu nhiệm vụ vào một worksheet, thêm một biểu đồ thanh xếp chồng và tạo kiểu cho các series và trục của nó, bạn có thể tạo ra các dòng thời gian trông chuyên nghiệp ngay trong một tệp Excel. Ẩn series offset bắt đầu trong khi tạo kiểu cho series thời lượng là kỹ thuật then chốt biến một biểu đồ thanh xếp chồng thông thường thành biểu đồ Gantt. Hãy nhớ rằng cần có giấy phép thương mại cho các triển khai sản xuất; bạn có thể lấy giấy phép tạm thời từ trang giấy phép tạm thời hoặc khám phá chi tiết giá trên trang giá. Bắt đầu tích hợp biểu đồ Gantt vào ứng dụng của bạn ngay hôm nay và giữ cho các bên liên quan được thông tin bằng các lịch trình trực quan rõ ràng.
Câu hỏi thường gặp
Làm thế nào để tạo biểu đồ Gantt trong Java bằng Conholdate.Total?
Tạo một Workbook, thêm một biểu đồ BAR_STACKED vào một worksheet, và thêm hai series: một series bắt đầu ẩn offset và một series thời lượng hiển thị. Đặt tên các nhiệm vụ làm dữ liệu danh mục, định dạng series hiển thị, và lưu workbook. Đoạn mã đầy đủ được cung cấp trong bài viết này.
Có thể xuất biểu đồ Gantt sang các định dạng khác ngoài Excel không?
Có. Vì biểu đồ được nhúng trong một workbook, bạn có thể lưu tệp bằng bất kỳ giá trị nào từ enum SaveFormat, chẳng hạn như XLSX, XLS hoặc ODS. Xem tài liệu chính thức để biết danh sách đầy đủ.
Cần giấy phép gì cho việc sử dụng trong môi trường sản xuất?
Giấy phép thương mại là bắt buộc. Bạn có thể yêu cầu giấy phép tạm thời từ trang giấy phép tạm thời và xem giá trên trang định giá.
Làm thế nào tôi có thể cải thiện hiệu suất cho các biểu đồ Gantt lớn?
Giữ phạm vi dữ liệu được tham chiếu bởi mỗi chuỗi càng chặt chẽ càng tốt, tránh việc tính lại workbook không cần thiết và hạn chế các lời gọi định dạng đối với các chuỗi và trục mà bạn thực sự cần. Giữ số lượng nhiệm vụ trên mỗi biểu đồ ở mức hợp lý cũng giúp việc render nhanh hơn cho các tệp dự án lớn.
