Bug反馈 代码生成的数据条wps打开异常

如图,左侧用excel打开数据条100%时满格显示正常,右侧wps打开,100%颜色填充未满。同一个文件。

//相关代码 处理百分比

private void cell4(Sheet sheet,int cellInt,CellStyle percentStyle) {

// 创建条件格式规则

SheetConditionalFormatting formatting = sheet.getSheetConditionalFormatting();

XSSFColor color = new XSSFColor(IndexedColors.ROYAL_BLUE, new DefaultIndexedColorMap());

ConditionalFormattingRule rule = formatting.createConditionalFormattingRule(color);

XSSFDataBarFormatting dataBarFormatting = (XSSFDataBarFormatting) rule.getDataBarFormatting();

dataBarFormatting.getMinThreshold().setRangeType(ConditionalFormattingThreshold.RangeType.NUMBER);

dataBarFormatting.getMaxThreshold().setRangeType(ConditionalFormattingThreshold.RangeType.NUMBER);

dataBarFormatting.getMinThreshold().setValue(0.0);

dataBarFormatting.getMaxThreshold().setValue(1.0);

dataBarFormatting.setWidthMin(0);

dataBarFormatting.setWidthMax(100);

try{

Field _databar = XSSFDataBarFormatting.class.getDeclaredField("_databar");

_databar.setAccessible(true);

org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDataBar ctDataBar =

(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDataBar)_databar.get(dataBarFormatting);

ctDataBar.setMinLength(0);

ctDataBar.setMaxLength(100);

} catch (Exception e){

}

String addr;

if(cellInt == 4){

addr = "E3:E" + (sheet.getPhysicalNumberOfRows());

}else {

addr = "C3:C" + (sheet.getPhysicalNumberOfRows() + 1);

}

CellRangeAddress[] range = {

CellRangeAddress.valueOf(addr)

};

formatting.addConditionalFormatting(range,rule);

for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {

Row r = sheet.getRow(i);

if(r == null){

continue;

}

Cell cell = r.getCell(cellInt);

if(cell.getCellType() == CellType.NUMERIC){

cell.setCellStyle(percentStyle);

}

}

if(cellInt == 2){

sheet.getRow(sheet.getPhysicalNumberOfRows()).getCell(2).setCellStyle(percentStyle);

}

}

浙江省
浏览 43
1
2
分享
2 +1
2
1 +1
全部评论 2
 
王增圆
王增圆

@金山办公

您好,能够提供下问题样张,我们分析下看看?
· 湖北省
回复
王增圆
王增圆

@金山办公

方便的话,可以留个联系方式,我们确认下
· 湖北省
回复