In Excel, we could use charts to visualize and compare data. However, once the charts are created, it becomes much difficult for us to read the data precisely from charts, adding a data table below the chart is a good solution. This article is going to introduce how to add a data table to an Excel chart in Java using Spire.XLS for Java.
import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
public class AddDataTableToChart {
public static void main(String[] args){
//Create a new workbook
Workbook workbook = new Workbook();
//Get the first worksheet
Worksheet sheet = workbook.getWorksheets().get(0);
//Set sheet name
sheet.setName("Demo");
//Add Data to the sheet
sheet.getRange().get("A1").setValue("Month");
sheet.getRange().get("A2").setValue("Jan.");
sheet.getRange().get("A3").setValue("Feb.");
sheet.getRange().get("A4").setValue("Mar.");
sheet.getRange().get("A5").setValue("Apr.");
sheet.getRange().get("A6").setValue("May.");
sheet.getRange().get("A7").setValue("Jun.");
sheet.getRange().get("B1").setValue("Peter");
sheet.getRange().get("B2").setNumberValue(3.3);
sheet.getRange().get("B3").setNumberValue(2.5);
sheet.getRange().get("B4").setNumberValue(2.0);
sheet.getRange().get("B5").setNumberValue(3.7);
sheet.getRange().get("B6").setNumberValue(4.5);
sheet.getRange().get("B7").setNumberValue(4.0);
sheet.getRange().get("C1").setValue("George");
sheet.getRange().get("C2").setNumberValue(3.8);
sheet.getRange().get("C3").setNumberValue(3.2);
sheet.getRange().get("C4").setNumberValue(1.7);
sheet.getRange().get("C5").setNumberValue(3.5);
sheet.getRange().get("C6").setNumberValue(4.5);
sheet.getRange().get("C7").setNumberValue(4.3);
sheet.getRange().get("D1").setValue("Macbeth");
sheet.getRange().get("D2").setNumberValue(3.0);
sheet.getRange().get("D3").setNumberValue(2.8);
sheet.getRange().get("D4").setNumberValue(3.5);
sheet.getRange().get("D5").setNumberValue(2.3);
sheet.getRange().get("D6").setNumberValue(3.3);
sheet.getRange().get("D7").setNumberValue(3.8);
//Add a chart to the sheet
Chart chart = sheet.getCharts().add(ExcelChartType.ColumnClustered);
//Set chart data
chart.setDataRange(sheet.getRange().get("B1:D7"));
chart.setSeriesDataFromRange(false);
//Set chart position
chart.setTopRow(8);
chart.setBottomRow(28);
chart.setLeftColumn(3);
chart.setRightColumn(11);
//Set chart title
chart.setChartTitle("Chart with Data Table");
chart.getChartTitleArea().isBold(true);
chart.getChartTitleArea().setSize(12);
//Set category labels for the first series of the chart
ChartSerie cs1 = chart.getSeries().get(0);
cs1.setCategoryLabels(sheet.getRange().get("A2:A7"));
//Add data table to the chart
chart.hasDataTable(true);
//Save the result file
workbook.saveToFile("AddDataTable.xlsx", ExcelVersion.Version2010);
}
}
Output:

