1、excel中的数据:一行一行的去读,即一行就是一个对象,还有就是:excel中的列要与javabean 中的属性相对应
2、其中需要注意的是:取得单元格的值时需要转化格式
3、用到的一些包:
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.DataFormatter;
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.Field;
具体代码:
private List<OptimizationStringApi> getExcelStringObject(){
HSSFWorkbook wb=null;
HSSFSheet sheet=null;
FileInputStream fw=null;
/*要想把excel中的每一行数据转换成javabean对象则用反射技术
* javabean中的属性个数要与excel中的列数一样,不然可能报错,属性顺序与列的顺序也要一样
* */
try{
fw=new FileInputStream("src/test/resources/organization/requestData/optimizationTests.xls"); //C:\Users\lin\stagingtest\backend-ft\src\test\resources\portfolio\template
POIFSFileSystem fs=new POIFSFileSystem(fw);
wb=new HSSFWorkbook(fs);
fw.close();
}catch(IOException e){
e.printStackTrace();
}finally{
if(fw!=null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
HSSFRow row=null;
List<OptimizationStringApi> dataList=new ArrayList<OptimizationStringApi>();
for(int i=0;i<wb.getNumberOfSheets();i++){
//循环excel中所有的 sheet
sheet=wb.getSheetAt(i);
for(int j=1;j<sheet.getPhysicalNumberOfRows();j++){
//循环每一个sheet中的每一行
row=sheet.getRow(j);
System.out.println("循环到了excel的行数:" + j);
OptimizationStringApi optimizationStringApi=new OptimizationStringApi();
Field[] beanFiled=optimizationStringApi.getClass().getDeclaredFields();
for(int z=0;z<row.getLastCellNum();z++){
//循环每一行中的所有列,就是得到单元格中的数据
try {
//强制反射,让private 的属性也可以访问
beanFiled[z].setAccessible(true);
//把得到的属性进行赋值,就是把读取到的单元格中的数据赋给对应的属性
DataFormatter formatter = new DataFormatter();
beanFiled[z].set(optimizationStringApi, formatter.formatCellValue(row.getCell(z)));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
dataList.add(optimizationStringApi);
}
}
for(OptimizationStringApi p : dataList){
System.out.println(p.toString());
}
return dataList;
}
```