POI WORD生成饼图

该代码示例展示了如何在Java中使用ApachePOI库的5.2.2版本创建Word文档中的饼图。方法`bulider`接收一个`XWPFChart`对象和`ChartOption`,从工作簿获取工作表,设置图例位置,创建饼图数据源,并自定义饼图的颜色。
摘要由CSDN通过智能技术生成

poi版本5.2.2

public class WordPieChart implements WordChart {

	public void bulider(XWPFChart chart, ChartOption options) {
		String sheetName = "sheet0";
		XSSFWorkbook workbook = null;
		try {
			workbook = chart.getWorkbook();
		} catch (Exception e) {
			e.printStackTrace();
			return;
		}
		XSSFSheet sheet = workbook.getSheet(sheetName);
		int rowIndex = this.refreshSheet(sheet, options);
		
		// 图例
		if(options.isShowLegend()) {
			XDDFChartLegend legend = chart.getOrAddLegend();
			legend.setPosition(options.getLegendPosition());
		}
				
		XDDFPieChartData pie = (XDDFPieChartData) chart.createData(ChartTypes.PIE, null, null);
		XDDFCategoryDataSource categorySource = XDDFDataSourcesFactory.fromStringCellRange(sheet,new CellRangeAddress(1, rowIndex - 1, 0, 0));
		XDDFNumericalDataSource<Double> valueSource = XDDFDataSourcesFactory.fromNumericCellRange(sheet,new CellRangeAddress(1, rowIndex - 1, 1, 1));
		XDDFChartData.Series series = pie.addSeries(categorySource, valueSource);
		
		chart.plot(pie);
		// 自定义饼图颜色
		CTChart c = chart.getCTChart();
		if (c.getAutoTitleDeleted() == null) {
			c.addNewAutoTitleDeleted();
		} 
	    c.getAutoTitleDeleted().setVal(false);
	    int pointCount = series.getCategoryData().getPointCount();
        CTPieSer ser = c.getPlotArea().getPieChartArray(0).getSerArray(0);
        for (int p = 0; p < pointCount; p++) {
    	  ser.addNewDPt().addNewIdx().setVal(p);
    	  ser.getDPtArray(p).addNewSpPr().addNewSolidFill().addNewSrgbClr().setVal(options.getColor(p));
        }
	}
}

效果如下

 本功能所有代码实现,摘自开源项目demo-ureport: 基于spring boot + Vue2 + Element UI + Echarts 重构ureport2中国式复杂报表设计器开源项目目录src/main/java/com/bstek/ureport/export/word/chart下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值