Java创建含多层分类标签的Excel图表
程序员文章站
2022-06-01 23:37:36
...
概述
通过图表能更直观的体现数据的变化趋势。在图表中一个数据可体现在多个数据分类标签下,常见的生成的图表默认含有一种分类标签,如果需要设置多层分类标签则可以参考以下Java代码示例方法。
使用工具:Free Spire.XLS for Java (免费版)
Jar获取及导入:通过官网下载jar包,并解压将lib文件夹下的Spire.Xls.jar文件导入java程序(推荐此方法);或者通过Maven仓库下载导入。
Java代码示例
import com.spire.xls.*; import com.spire.xls.charts.ChartSerie; import java.awt.*; public class MultiLevelCategoryLabels { public static void main(String[] args) { //创建Workbook实例,获取工作表 Workbook wb = new Workbook(); Worksheet sheet = wb.getWorksheets().get(0); //写入数据到工作表 sheet.getCellRange("A2").setText("出口前"); sheet.getCellRange("A5").setText("出口后"); sheet.get("B1").setText("年份"); sheet.getCellRange("B2").setText("2017年"); sheet.getCellRange("B6").setText("2018年"); sheet.getCellRange("C1").setText("季度"); sheet.getCellRange("C2").setText("1季度"); sheet.getCellRange("C3").setText("2季度"); sheet.getCellRange("C4").setText("3季度"); sheet.getCellRange("C5").setText("4季度"); sheet.getCellRange("C6").setText("1季度"); sheet.getCellRange("C7").setText("2季度"); sheet.getCellRange("C8").setText("3季度)"); sheet.getCellRange("C9").setText("4季度"); sheet.getCellRange("D1").setText("季度产量\n(万吨)"); sheet.getCellRange("D2").setValue("1.56"); sheet.getCellRange("D3").setValue("2.3"); sheet.getCellRange("D4").setValue("3.21"); sheet.getCellRange("D5").setValue("3.5"); sheet.getCellRange("D6").setValue("4.8"); sheet.getCellRange("D7").setValue("5.2"); sheet.getCellRange("D8").setValue("5.79"); sheet.getCellRange("D9").setValue("5.58"); //合并单元格,设置单元格对齐方式 sheet.getCellRange("A2:A4").merge(); sheet.getCellRange("A5:A9").merge(); sheet.getCellRange("B2:B5").merge(); sheet.getCellRange("B6:B9").merge(); sheet.getCellRange("A1:D9").getStyle().setHorizontalAlignment(HorizontalAlignType.Center); sheet.getCellRange("A1:D9").getStyle().setVerticalAlignment(VerticalAlignType.Center); //添加柱状图表 Chart chart = sheet.getCharts().add(ExcelChartType.LineMarkers); chart.setChartTitle("季度产量(万吨)");//设置图表标题 chart.getPlotArea().getFill().setFillType(ShapeFillType.NoFill); //不填充绘图区域(默认填充灰色) chart.getLegend().delete();//删除图例 //指定柱状图表在工作表中的位置及宽度 chart.setLeftColumn(5); chart.setTopRow(1); chart.setRightColumn(14); //设置图表系列数据来源 chart.setDataRange(sheet.getCellRange("D2:D9")); chart.setSeriesDataFromRange(false); chart.getSeries().get(0).getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(); chart.getSeries().get(0).getFormat().getLineProperties().setColor(new Color(123,104,238)); //设置系列分类标签数据来源 ChartSerie serie = chart.getSeries().get(0); serie.setCategoryLabels(sheet.getCellRange("A2:C9")); //显示多层分类标签 chart.getPrimaryCategoryAxis().setMultiLevelLable(true); //保存文档 wb.saveToFile("output.xlsx", ExcelVersion.Version2013); wb.dispose(); } }