2016-09-23 166 views
0

我正在尝试学习如何在小型项目中使用Apache POI。我想使用Excel通过使用颜色编码的单元格来创建“房间布局”,并将数据加载到Java程序中。我想如何访问单元格的颜色属性,但我问的是:使用Apache POI获取单元格颜色

是否可以访问空白单元格的颜色(无数据或值),或者单元格是否需要数据为了让Apache POI读取它?

我只对颜色感兴趣,所以可能最好将垃圾数据放入单元格中,或者可能根据坐标对它们进行迭代?我是Apache POI的全新产品,因此非常感谢所有帮助。

回答

3

你有什么试过?请阅读Busy Developers' Guide to HSSF and XSSF Features

假设以下工作簿:

enter image description here

然后将以下代码应与a.xls(HSSF)工作,以及与a.xlsx(XSSF)。

import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.xssf.usermodel.*; 
import org.apache.poi.hssf.util.HSSFColor; 
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 

import java.io.*; 

class ReadExcelEmptyColoredCells { 

public static void main(String[] args) { 
    try { 

    //Workbook workbook = WorkbookFactory.create(new File("a.xls")); 
    Workbook workbook = WorkbookFactory.create(new File("a.xlsx")); 

    Sheet sheet = workbook.getSheetAt(0); 

    for (Row row : sheet) { 
    for (Cell cell : row) { 
    if (! "".equals(String.valueOf(cell))) 
     System.out.println(cell.getAddress() + ": " + String.valueOf(cell)); 
    CellStyle cellStyle = cell.getCellStyle(); 
    Color color = cellStyle.getFillForegroundColorColor(); 
    if (color != null) { 
     if (color instanceof XSSFColor) { 
     System.out.println(cell.getAddress() + ": " + ((XSSFColor)color).getARGBHex()); 
     } else if (color instanceof HSSFColor) { 
     if (! (color instanceof HSSFColor.AUTOMATIC)) 
     System.out.println(cell.getAddress() + ": " + ((HSSFColor)color).getHexString()); 
     } 
    } 
    } 
    } 

    workbook.close(); 

    } catch (InvalidFormatException ifex) { 
    } catch (FileNotFoundException fnfex) { 
    } catch (IOException ioex) { 
    } 
} 
} 
+0

我还没有真正尝试过任何东西,因为我真的不知道从哪里开始,也没有找到快速指南。然而,查看你的代码将非常有用的方式来获得我的轴承如何工作。谢谢。 – Geo

相关问题