2016-09-23 167 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

相關問題