当前位置: 首页 > 知识库问答 >
问题:

没有背景单元格的HSSFColor返回错误的背景颜色

毛镜
2023-03-14
Workbook myWorkBook = WorkbookFactory.create(new File(filePath));
Sheet mySheet = myWorkBook.getSheetAt(0);

Row currentRow = null;
Iterator<Row> rowIterator = mySheet.iterator();
while (rowIterator.hasNext())
{
currentRow = (Row) rowIterator.next();
totalColumns = currentRow.getPhysicalNumberOfCells();

for (int column = 0; column < totalColumns; column++)
{
Cell cell = currentRow.getCell(column);
CellStyle cellStyle = cell.getCellStyle();
short colorIdx=cellStyle.getFillForegroundColor();

HSSFWorkbook workbook = (HSSFWorkbook)myWorkBook;
HSSFPalette palette = workbook.getCustomPalette();
HSSFColor color = palette.getColor(colorIdx);

short[] triplet = color.getTriplet();
System.out.println("Now Color :"+triplet[0]+"-"+triplet[1]+"-"+triplet[2]);
}
}

共有1个答案

孟韬
2023-03-14

Excel单元格填充是模式填充。填充前景色是图案的颜色,填充背景色是图案后面的颜色。

因此,只有当有一个填充图案,颜色是有意义的,否则没有。确定单元格是否通过获取填充模式而不是通过颜色填充也是如此。

执行CellStyle.GetFillPattern,然后仅当FillPatternType不是FillPatternType.no_Fill时,才填充单元格。

...
CellStyle cellStyle = cell.getCellStyle();
FillPatternType patternType = cellStyle.getFillPattern();
if (patternType  != FillPatternType.NO_FILL) {
 short colorIdx = cellStyle.getFillForegroundColor();
 ...
...
CellStyle cellStyle = cell.getCellStyle();
short patternType = cellStyle.getFillPattern();
if (patternType  != 0) {
 short colorIdx = cellStyle.getFillForegroundColor();
 ...
 类似资料:
  • 我正在使用Apache POI 4.1.2运行以下代码: 输出文档包含两个具有红色背景的单元格:似乎在第二个单元格上设置红色背景具有覆盖第一个单元格背景颜色的效果。 如果仅在第一个单元格上设置背景,则背景颜色将正确设置为绿色。 我如何解决这个问题?

  • 我必须打开现有的Excel并设置一些值或更改该单元格的背景/前景色。 这个excel是关于一家公司的工作日,所以我已经设计了一个Excel。我必须改变一些单元格的前景,因为,正如你可以想象的那样,在某些日子里,我们不起作用。 因此,对于每一天(对应于一个单元格),如果它没有被“启用”,它必须变成黄色。 我的代码是: 我想采用单元格的实际CellStyle,只更改前景色。这段代码部分有效,因为在其他

  • 问题内容: 我正在尝试使用渲染器为jTable的单元格上色,但是它们工作不佳,因为它们滞后于表格并且无法看到。这是我的代码: 我没有将其放入rendererclass中,因为它滞后了,我将其放入cicle的双精度中,具体地说,放入了第二个cicle。我希望它为超过24的单元格上色,如果现在我写的话,那是行不通的 它使桌子完全着色 编辑 按照要求,我创建了一个描述我的问题的小示例,我不知道是否存在发

  • 我如何在Vaadin 8或更高版本中绘制网格单元。由于Vaadin 8不再支持grid.setCellStyleGenerator,我不知道还能做什么。有什么建议吗?

  • 我想改变JTable的单元格背景颜色,想从MySQL数据库中获取数据。 我在MySQL中使用一个数据表,它有一个状态字段。如果状态为1,则单元格背景颜色应为红色;如果状态为0,则应更改为红色。

  • 在超文本标记语言中,我什么时候使用颜色,背景颜色和背景标签有什么区别? 有什么区别?