This article demonstrates how to create chart with non-contiguous data in Excel using Spire.XLS for Java.
The example Excel file:
import com.spire.xls.*; import com.spire.xls.charts.ChartSerie; import java.awt.*; public class ChartWithNonContiguousData { public static void main(String[] args){ //Create a Workbook instance Workbook workbook = new Workbook(); //Load the Excel file workbook.loadFromFile("NonContiguousData.xlsx"); //Get the first worksheet Worksheet sheet = workbook.getWorksheets().get(0); //Add a clustered column chart to the worksheet Chart chart = sheet.getCharts().add(ExcelChartType.ColumnClustered); chart.setSeriesDataFromRange(false); //Set chart position chart.setLeftColumn(1); chart.setTopRow(10); chart.setRightColumn(10); chart.setBottomRow(24); //Add a series to the chart ChartSerie cs1 = (ChartSerie)chart.getSeries().add(); //Set series name cs1.setName(sheet.getCellRange("B1").getValue()); //Set category labels for the series using non-contiguous data cs1.setCategoryLabels(sheet.getCellRange("A2:A3").addCombinedRange(sheet.getCellRange("A5:A6")) .addCombinedRange(sheet.getCellRange("A8:A9"))); //Set values for the series using non-contiguous data cs1.setValues(sheet.getCellRange("B2:B3").addCombinedRange(sheet.getCellRange("B5:B6")) .addCombinedRange(sheet.getCellRange("B8:B9"))); //Specify the series type cs1.setSerieType(ExcelChartType.ColumnClustered); //Add a series to the chart ChartSerie cs2 = (ChartSerie)chart.getSeries().add(); //Set series name cs2.setName(sheet.getCellRange("C1").getValue()); //Set category labels for the series using non-contiguous data cs2.setCategoryLabels(sheet.getCellRange("A2:A3").addCombinedRange(sheet.getCellRange("A5:A6")) .addCombinedRange(sheet.getCellRange("A8:A9"))); //Set values for the series using non-contiguous data cs2.setValues(sheet.getCellRange("C2:C3").addCombinedRange(sheet.getCellRange("C5:C6")) .addCombinedRange(sheet.getCellRange("C8:C9"))); //Specify the series type cs2.setSerieType(ExcelChartType.ColumnClustered); //Set chart title chart.setChartTitle("Chart"); chart.getChartTitleArea().getFont().setSize(20); chart.getChartTitleArea().setColor(Color.black); chart.getPrimaryValueAxis().hasMajorGridLines(false); //Save the result file workbook.saveToFile("Chart.xlsx", ExcelVersion.Version2013); } }
Output: