最近需要处理一些 电子表格,然后下了一个APACHE.POI.HSSF用,
看了一下说明文档,自己写了一段简单的程序,但是编译时老是告诉我(C:\test\ok\ReadHSSF.java:37: incompatible types
found   : double
required: java.lang.Double
                                cellValue[i][j] = cell.getNumericCellValue();
                                                                          ^
C:\test\ok\ReadHSSF.java:41: incompatible types
found   : double
required: java.lang.Double
                                cellValue[i][j] = (double)0;
                                                  ^
2 errors)
下面是有问题的代码:import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.*;
import java.io.IOException;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.FileInputStream;
public class ReadHSSF
{
public static void main (String args[]) throws IOException
    {
     int val=1;
    
     POIFSFileSystem fs=
     new POIFSFileSystem(new FileInputStream("E:/workstation/cai3.xls"));
    
     HSSFWorkbook wb=new HSSFWorkbook(fs);
     HSSFSheet sheet1 = wb.getSheetAt(0);
     //HSSFRow row = sheet1.getRow(0);
     //HSSFCell cell = row.getCell((short)0);
    
     FileWriter fw = new FileWriter("hssf.txt");
     PrintWriter pw = new PrintWriter(fw);
    
     //System.out.print(cell.getStringCellValue());
    
     Double[][] cellValue = new Double[16][48];
     for(int i=0;i<16;i++)
     {
     for(int j=0;j<48;j++)
     {
     HSSFRow row = sheet1.getRow(val);
     HSSFCell cell = row.getCell((short)1);
     try
     {
     cellValue[i][j] = cell.getNumericCellValue();
     }
     catch(NullPointerException e)
     {
     cellValue[i][j] = (double)0;
     }
     finally
     {
     pw.println(cellValue[i][j].toString()+'\r');
     }
     val++;
     }
     }
    
     fw.close();
     pw.close();
    
    
    }
}

解决方案 »

  1.   

    POI里的数据类型是需要判断的
    比如说吧。如果一个cell单元的格式是CELL_TYPE_NUMERIC,就需要采用getNumericCellValue来获得cell的数据 
    如果是erro,那就需要用get erro的方法来获得数据.获取数据都是相对应的,当然。如果你确定你的数据是String的话。。当然可以只用getStringCellValue方法来获得..建议取数据时弄个方法来判断另注:分太少了点吧~~代码就不放了.哈哈
      

  2.   

    过段时间我也得用POI来处理Excel,不知道这个包能不能支持将图片放进Excel中,或者自己用sevlet画的图能不能放进去,望知道的告诉一下
      

  3.   

    ioby(iii) 说的对
    跟POI没什么关系
      

  4.   

    cellValue[i][j] = (double)0;错了
      

  5.   

    Double[][] cellValue = new Double[16][48];
    该为double[][] cellValue = new double[16][48];