The java object of type Integer is different than the primitive int. HSSFFont.getColor() actually returns a short, but java will automatically cast short to int. The Map object returned by HSSFColor.getIndexHash() is indexed by Integer. Should go something like below. If you're using a recent build of POI that supports generic types, the value of the hash is already declared as HSSFColor, so it doesn't need to be cast.
HSSFColor color = HSSFColor.getIndexHash().get(Integer.valueOf(colorIndex));
You will wind up also with
import java.lang.Integer
-----Original Message-----
From: java400-l-bounces@xxxxxxxxxxxx [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Peter Dow
Sent: Monday, July 18, 2011 2:16 PM
To: Java Programming on and around the iSeries / AS400
Subject: Incompatible types error from getIndexHash()
IANAJP (I am not a Java programmer), so please don't expect much, i.e.
it may be a totally obvious error.
I get the following error when compiling a java program I'm trying to use to figure out how to get the color of text in a cell.
testjava.java:33: incompatible types
found : java.lang.Object
required: org.apache.poi.hssf.util.HSSFColor
HSSFColor color = HSSFColor.getIndexHash().get(colorIndex);
^
1 error
Here's the entire program:
import java.io.*;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class testjava {
public static void main () {
FileInputStream in = new FileInputStream("/home/pdow/test.xls");
POIFSFileSystem fs = new POIFSFileSystem(in);
HSSFWorkbook wb = new HSSFWorkbook(fs);
// The following code is from this thread:
//
http://apache-poi.1045710.n5.nabble.com/hssf-and-multiple-colors-per-cell-td3425176.html
HSSFRichTextString str =
wb.getSheetAt(1).getRow(3).getCell(0).getRichStringCellValue();
for(int i = 0; i < str.numFormattingRuns(); i++){
short fontIndex = str.getFontOfFormattingRun(i);
HSSFFont font = wb.getFontAt(fontIndex);
int colorIndex = font.getColor();
HSSFColor color = HSSFColor.getIndexHash().get(colorIndex);
System.out.println(color);
}
}
I'm hoping it's something totally obvious to someone!
--*
Peter Dow*/
Dow Software Services, Inc.
909 793-9050
pdow@xxxxxxxxxxxxxxx <mailto:pdow@xxxxxxxxxxxxxxx>
/
As an Amazon Associate we earn from qualifying purchases.