一、jxl(excel2003)需要jxl包
兼容性较差,代码如下:
private List<Type> readExcel(File file) throws Exception {
new ResultObject(true);
List<Type> typelist = new ArrayList<Contract>();
Workbook rwb = null;
String cellStr = null;
Type type= null;
// 创建输入流
// 获取Excel文件对象
if (file == null || !file.exists()) {
System.out.println(file.getName() + "不存在!");
}
InputStream stream = new FileInputStream(file);
rwb = Workbook.getWorkbook(stream);
// 获取文件的指定工作表 默认的第一个
Sheet sheet = rwb.getSheet(0);
// 行数(表头的目录不需要,从1开始)
for (int i = 1; i < sheet.getRows(); i++) {
// 创建一个对象对应一行, 用来存储每一列的值
type=new Type();
// 列数
contract.setRowNum("" + (i + 1));
cellStr = sheet.getCell(0, i).getContents().trim();//第一列数据
type.setContent(cellStr );
typelist .add(type);
}
stream.close();
rwb.close();
return typelist ;
}
将type换成自己的实体类即可获得对象。
二、poi方式(兼容2003与2007)需要poi包
代码是以前保存的别人代码,很实用,拿来用一下。
public List<String[]> getAllData(int sheetIndex){
int columnNum = 0;
Sheet sheet = wb.getSheetAt(sheetIndex);
if(sheet.getRow(0)!=null){
columnNum = sheet.getRow(0).getLastCellNum()-sheet.getRow(0).getFirstCellNum();
}
if(columnNum>0){
for(Row row:sheet){
String[] singleRow = new String[columnNum];
int n = 0;
for(int i=0;i<columnNum;i++){
Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK);
switch(cell.getCellType()){
case Cell.CELL_TYPE_BLANK:
singleRow[n] = "";
break;
case Cell.CELL_TYPE_BOOLEAN:
singleRow[n] = Boolean.toString(cell.getBooleanCellValue());
break;
//数值
case Cell.CELL_TYPE_NUMERIC:
if(DateUtil.isCellDateFormatted(cell)){
singleRow[n] = String.valueOf(cell.getDateCellValue());
}else{
cell.setCellType(Cell.CELL_TYPE_STRING);
String temp = cell.getStringCellValue();
//判断是否包含小数点,如果不含小数点,则以字符串读取,如果含小数点,则转换为Double类型的字符串
if(temp.indexOf(".")>-1){
singleRow[n] = String.valueOf(new Double(temp)).trim();
}else{
singleRow[n] = temp.trim();
}
}
break;
case Cell.CELL_TYPE_STRING:
singleRow[n] = cell.getStringCellValue().trim();
break;
case Cell.CELL_TYPE_ERROR:
singleRow[n] = "";
break;
case Cell.CELL_TYPE_FORMULA:
cell.setCellType(Cell.CELL_TYPE_STRING);
singleRow[n] = cell.getStringCellValue();
if(singleRow[n]!=null){
singleRow[n] = singleRow[n].replaceAll("#N/A","").trim();
}
break;
default:
singleRow[n] = "";
break;
}
n++;
}
if("".equals(singleRow[0])){continue;}//如果第一行为空,跳过
dataList.add(singleRow);
}
}
return dataList;
}