如何在Apache Poi 5的XSSFChart中设置单个数据标签为粗体?
在Apache POI 5.3.0中设置单个XSSFChart数据标签为粗体
可以实现,你需要直接操作POI底层的OOXML对象(CTDLbl),因为POI的高层XSSFChart API暂时没有封装单个数据标签的自定义设置,但底层基于OOXML Schema生成的CT类完全支持该操作。
具体实现步骤
- 获取图表系列的数据标签集合(
CTDLbls) - 针对目标数据点,获取或新增对应的单个数据标签对象(
CTDLbl),并指定对应的数据点索引 - 给单个数据标签设置粗体字体属性
代码示例
// 获取饼图第一个系列的数据标签集合 CTDLbls dLbls = chart.getCTChart().getPlotArea().getPieChartArray(0).getSerArray(0).getDLbls(); // 要修改第0个数据点的标签(索引从0开始) CTDLbl singleDLbl; if (dLbls.sizeOfLblArray() > 0) { // 已有单个数据标签设置时,直接获取对应索引的对象 singleDLbl = dLbls.getLblArray(0); } else { // 无单个标签设置时,新增并指定对应的数据点索引 singleDLbl = dLbls.addNewLbl(); singleDLbl.setIdx(0); // 指定对应第0个数据点 } // 给单个数据标签设置粗体字体 singleDLbl.addNewTxPr(); singleDLbl.getTxPr().addNewBodyPr(); singleDLbl.getTxPr().addNewP(); singleDLbl.getTxPr().getPArray(0).addNewPPr(); singleDLbl.getTxPr().getPArray(0).getPPr().addNewDefRPr().setB(true);
说明
- 单个数据标签的配置(
CTDLbl)优先级高于全局数据标签设置,会覆盖全局样式 - 修改
setIdx的参数值,可以定位到其他数据点进行单独设置
内容的提问来源于stack exchange,提问作者Dima Klokov
相关产品推荐
相关产品推荐

