我已经发布了代码。 我想在excel中获取单元格的颜色,并且我发布我的excel文件,只有两种颜色,绿色和黄色。 如果我使用XSSFColor,则打印输出为XSSFColor @ 8b21b8fa和XSSFColor @ dfcdb1。因此,我无法比较它是绿色还是黄色。 如果是黄色,我希望打印出1,如果是绿色,我希望打印出0。谢谢你的帮助!!!
for(Row row : sheet)
{
for(Cell cell : row)
{
switch(formulaEvaluator.evaluateInCell(cell).getCellType())
{
case Cell.CELL_TYPE_BLANK:
Color cellColor= cell.getCellStyle().getFillForegroundColorColor();
if(cellColor==Color.GREEN)
{
System.out.print(0+",");
}
else if(cellColor==Color.YELLOW)
{
System.out.print(1+",");
}
}
}
System.out.println();
}
答案 0 :(得分:1)
虽然可以从java.awt.Color
创建java.awt.Color
,但很难从XSSFColor
获取ARGBHex
。
我们可以将单元格XSSFColor
的{{1}}与ARGBHex
中新创建的XSSFColor
的{{1}}进行比较。
示例:
java.awt.Color
但是在你提供的图片中,RGB 00FF00的绿色似乎不是真正的绿色,而是混合绿色。因此,与import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xssf.usermodel.XSSFColor;
class ColorTest {
public static void main(String[] args) {
try {
InputStream inp = new FileInputStream("ColorTest.xlsx");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
for (Row row : sheet) {
for(Cell cell : row) {
switch(cell.getCellType()) {
case Cell.CELL_TYPE_BLANK:
Color cellColor= cell.getCellStyle().getFillForegroundColorColor();
if (cellColor instanceof XSSFColor) {
XSSFColor xssfCellColor = (XSSFColor) cellColor;
if(xssfCellColor.getARGBHex().equals(new XSSFColor(java.awt.Color.GREEN).getARGBHex())) {
System.out.print(0+",");
} else if(xssfCellColor.getARGBHex().equals(new XSSFColor(java.awt.Color.YELLOW).getARGBHex())) {
System.out.print(1+",");
}
}
break;
}
}
}
System.out.println();
} catch (InvalidFormatException ifex) {
} catch (FileNotFoundException fnfex) {
} catch (IOException ioex) {
}
}
}
的比较将不匹配,因为java.awt.Color.GREEN
正好是RGB 00FF00。
java.awt.Color.GREEN
和XSSF
的示例:
HSSF