我使用POI类HSSFSheetConditionalFormatting在Excel中生成数据栏。我希望数据栏和原始数据都显示在单元格中,如图所示expected result
,所以我使用HSSFDataBarFormatting.setIconOnly(false)函数,但是它不起作用。 结果文件为actual result。 这是我的测试代码。 我在做什么错了?
static void dataBars2(HSSFSheet sheet) {
CellStyle cs = sheet.getWorkbook().createCellStyle();
cs.setDataFormat((short) 10);
cs.setAlignment(HorizontalAlignment.CENTER);
CellStyle cs_header = sheet.getWorkbook().createCellStyle();
cs_header.setFillPattern(FillPatternType.FINE_DOTS);
cs_header.setFillForegroundColor(IndexedColors.BLUE_GREY.index);
cs_header.setFillBackgroundColor(IndexedColors.BLUE_GREY.index);
cs_header.setAlignment(HorizontalAlignment.CENTER);
Row r = sheet.createRow(0);
r.createCell(0).setCellValue("Data Bars");
r.createCell(1).setCellValue("Green Positive");
for (int i = 0; i <= 8; i++) {
r = sheet.createRow(i + 1);
Cell c = r.createCell(1);
c.setCellValue(0.1 * i);
c.setCellStyle(cs);
}
HSSFSheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
ExtendedColor color = sheet.getWorkbook().getCreationHelper().createExtendedColor();
color.setARGBHex("FFF8696B");
CellRangeAddress[] regions = {CellRangeAddress.valueOf("B2:B10")};
HSSFConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(color);
HSSFDataBarFormatting db1 = rule1.getDataBarFormatting();
db1.getMinThreshold().setRangeType(RangeType.MIN);
db1.getMaxThreshold().setRangeType(RangeType.MAX);
db1.setWidthMin(0);
db1.setIconOnly(false);
db1.setLeftToRight(false);
sheetCF.addConditionalFormatting(regions, rule1);
}