POI操作EXCEL03前后版本不兼容问题解决

来源:互联网 发布:基三成女捏脸数据 编辑:程序博客网 时间:2024/05/09 22:57

开发程序遇到读取EXCEL时,03前后的版本不兼容,如下

/*
 * Workbook、Sheet、Row、Cell等为接口; 
 * HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell为97-2003版本对应的处理实现类; 
 * XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell为2007+版本对应的处理实现类;
 */

为了解决问题,对POI版本进行了升级,引入新的jar包如下:

poi-3.9-20121203.jar

poi-excelant-3.9-20121203.jar

poi-ooxml-3.9-20121203.jar

poi-ooxml-schemas-3.9-20121203.jar

poi-scratchpad-3.9-20121203.jar

xmlbeans-2.3.0.jar

代码如下:

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;


public static List<?> readExcel(ReportBean reportBean, Object obj) {
FileInputStream fis = null;
try {
fis = new FileInputStream(reportBean.getFileName());
/*
* Workbook、Sheet、Row、Cell等为接口; 
* HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell为97-2003版本对应的处理实现类; 
* XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell为2007+版本对应的处理实现类;
*/
Workbook workbook = WorkbookFactory.create(fis);
SheetBean sheetBean = reportBean.getSheetBeanList().get(reportBean.getSheetAt());
Sheet sheet = workbook.getSheetAt(reportBean.getSheetAt());
if (sheet == null){
return null;
}
// 设置读取参数
int startRow = reportBean.getStartRow();
int lastRow = sheet.getPhysicalNumberOfRows();
String[] fieldKeys = sheetBean.getTableBean().getFieldKeys();
// 开始读取表格内容
Row row = null;
Cell cell = null;
List<Object> list = new ArrayList<Object>();
for (int i = startRow; i <= lastRow; i++) {
row = sheet.getRow(i);
if (row == null)
break;
Map<String, Object> map = new HashMap<String, Object>();
for (short j = 0; j < fieldKeys.length; j++) {
cell = row.getCell(j);
if (cell != null && cell.getCellType() == 0)
map.put(fieldKeys[j], String.valueOf(cell.getNumericCellValue()));
else
map.put(fieldKeys[j], (cell == null ? "" : cell.getStringCellValue()));
}
list.add(map);
}


List<Object> entitys = new ArrayList<Object>();
// Json中转方式
if (obj instanceof Map<?, ?> || obj instanceof HashMap<?, ?>) {
entitys = list;
} else {
String jsonStr = JsonUtil.convertListToJson(list);
entitys = (List<Object>) JsonUtil.convertJsonToList(jsonStr, obj);
}
return entitys;
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

原创粉丝点击