excel导入(HSSFWorkbook)

来源:互联网 发布:百度贴吧获取数据失败 编辑:程序博客网 时间:2024/06/15 15:22
Public String DaoRu(HttpServletRequest,Model model) throws IOException{
//将HttpServletRequest转型为MultipartHttpServletRequest,不转型获取不到文件名。
MultipartHttpServletRequest mrequest=(MultipartHttpServletRequest)request ;
//获得文件
MultipartFile file=mrequest.getFile("fileinput");
//获取输入流
InputStream in=file.getInputStream();
HSSFWorkbook hssfworkbook=new HSSFWorkbook(in);
HSSFCell cell=null;
int cellType;
String result=null;
//数据格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<String> list=new ArrayList<String>(); //将导入人员姓名存入list中,方便前台显示!

for(int SheetNum=0;SheetNum<hssfworkbook.getNumberOfSheets();SheetNum++){
//获取excel表格中的sheet页
HSSFSheet hssfsheet =hssfworkbook.getSheetAt(SheetNum);
if(hssfsheet==null){
continue;
}else{
for(int rowNum=1;rowNum<=hssfSheet.getLastRowNum();rowNum++){
//创建一个行对象。
HSSFRow hssfrow=hssfsheet.getRow(rowNum);
//实体对象
TRyJbxxDsh t=new TRyJbxxDsh();
if(hssfrow==null){
continue;
}else{
try{
//一般下标是从0开始,但是excel表格第一行都是标题,不用读进来,所以从下标1开始。
//replaceAll(" ","");去除姓名中的空格。
String xm=hssfrow.getCell(1).getStringCellValue().replaceAll(" ","");
t.setXm(xm);
String xb=hssfrow.getCell(2).getStringCellValue();
t.setXb(xb);
String sfzh=hssfrow.getCell(3).getStringCellValue();
t.setSfzh(sfzh);


//转换表格中日期类型的数据
cell =hssfRow.getCell(4);//获取单元格对象。
cellType = cell.getCellType();//获取单元格格式
result ="";
Date csrq=null;
//数据格式为date类型
if(cellTypy==HSSFCell.CELL_TYPE_NUMERIC){
Date date=cell.getDateCellValue();
result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1)+ "-" + date.getDate();
}else if(cellType==HSSFCell.CELL_TYPE_BLANK){
//空值
result="";
}else if(cellType == HSSFCell.CELL_TYPE_STRING){
//string类型
               String date = cell.getStringCellValue();
              result = date.replaceAll("[年月]", "-").replace("日", "").trim();
}
if(!"".equals(result) && result != null){
try {
csrq = sdf.parse(result);
} catch (ParseException e1) {
e1.printStackTrace();
}
}
t.setCsrq(csrq);


//将插入的一条信息的姓名放到list返回前台提示
list.add(xm);
//插入一条人员信息,insertOne()是另外一个方法。
insertOne(t);
}catch (Exception e) {
                String msg="导入excel表格格式有问题,请确认后重试!";
                model.addAttribute("msg",msg);
                return "/smz/renyuandaoru.jsp";
                }
}
}
}
}
String msg = "新增人员成功!人员姓名为:"+list.toString();
model.addAttribute("msg", msg);
return "/smz/renyuandaoru.jsp";


}
0 0
原创粉丝点击