jxl中文乱 在解析excel的时候当遇到单元格的值是#DIV/0!的时候就成了乱码? 下面是代码
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();
}
}
} --------------------编程问答-------------------- 这个问题在我这里算是解决了,我已经找到了我要的 我在输出的时候加了这样的代码
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");
}
达到了我要的结果 但是依旧没有解决问题的根本 ,所以还是继续就真解
补充:Java , Java EE