package com.excel.test;import java.io.File;import jxl.Cell;
import jxl.Range;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
public class ReadExcelTest {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
ReadExcelTest excelTest=new ReadExcelTest();
try {
WorkbookSettings settings=new WorkbookSettings();
settings.setEncoding("iso-8859-1");
Workbook workBook=Workbook.getWorkbook(new File("222.xls"),settings);
Sheet[] sheets=workBook.getSheets();
for(Sheet sheet:sheets){
if(!sheet.isHidden()){
System.out.println("sheet:"+sheet.getName());
excelTest.readSheet(sheet);
}
}
workBook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
 * 判断单元格是否是合并单元格
 * @param sheet   当前操作的sheet
 * @param cell   需要判断的单元格
 * @return  TRUE是合并单元格
 */
public boolean changeCell(Sheet sheet,Cell cell){
Range[] range=sheet.getMergedCells();
Cell cellBegein;
Cell cellLast;
int begeinRow;
int endRow;
int begeinColumn;
int endColumn;
int row=cell.getRow();
int column=cell.getColumn();
for(int i=0;i<range.length;i++){
cellBegein=range[i].getTopLeft();
begeinRow=cellBegein.getRow();
begeinColumn=cellBegein.getColumn();
cellLast=range[i].getBottomRight();
endRow=cellLast.getRow();
endColumn=cellLast.getColumn();
if(row>=begeinRow&&column>=begeinColumn){
if(row<=endRow&&column<=endColumn){
if(row==begeinRow&&column==begeinColumn){
return false;
}
return true;
}
}
}
return false;
}
/**
 * 读取一个sheet
 * @param sheet 需要读取的sheet
 */
  public void readSheet(Sheet sheet){
// //左上单元格
// Cell cellBegein=range[1].getTopLeft();
// System.out.println(cellBegein.getColumn()+"---------"+cellBegein.getRow());
// //右下单元格
// Cell cellLast=range[1].getBottomRight();
for(int i=0;i<sheet.getRows();i++){
for(int j=0;j<sheet.getColumns();j++){
Cell cell=sheet.getCell(j,i);
boolean bool=changeCell(sheet, cell);
if(bool){
System.out.print("合并\t");
}else{
System.out.print(cell.getContents().toString()+"\t");
}
}
System.out.println();
}
  }

}

解决方案 »

  1.   

    这个问题在我这里算是解决了,我已经找到了我要的 我在输出的时候加了这样的代码
    if(cell.getType() == CellType.NUMBER_FORMULA){
    NumberCell cc = (NumberCell)cell;
    if("NaN".equals(cc.getValue()+"")){
    System.out.print("#DIV/0!\t");
    }else{
    System.out.print(cc.getContents()+"\t");
    }
    }else{
       System.out.print(cell.getContents()+"\t");
    }
    达到了我要的结果 但是依旧没有解决问题的根本 ,所以还是继续就真解