poi导入excel

求告知,为什么我进行导入excel时,前台页面导入的文件为空呢?我打印了importFile,显示为空,为什么,求大牛告知!... 求告知,为什么我进行导入excel时,前台页面导入的文件为空呢?我打印了importFile,显示为空,为什么,求大牛告知! 展开
 我来答
云南新华电脑学校
2018-04-15 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
展开全部

方法/步骤

  • 一,  ExcelUtils 工具类(也就是解析EXCEL文件,判断EXCEL的类型以及数据的类型)

  • import  java.io.IOException;    

    import  java.io.InputStream;    

    import  java.math.BigDecimal;  

    import  java.text.SimpleDateFormat;    

    import  java.util.ArrayList;    

    import  java.util.Date;  

    import  java.util.List;    

    import  org.apache.poi.hssf.usermodel.HSSFDateUtil;  

    import  org.apache.poi.hssf.usermodel.HSSFWorkbook;    

    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.xssf.usermodel.XSSFWorkbook;    

    public class ExcelUtils {     

    private final static  String excel2003L = “.xls” ;    // 2003-版本的excel      

    private final static  String excel2007U = “.xlsx” ;   // 2007 +版本的excel      

    / **  

    *描述:获取IO流中的数据,组装成List <List <Object>对象  

    * @param in,fileName  

    * @返回  

    * @throws IOException   

    * /    

    public   List <List <Object> getBankListByExcel(InputStream in,String fileName)  throws  Exception {    

    列表<List <Object> list =  null ;    

    //创建的Excel工作薄    

    Workbook work =  this .getWorkbook(in,fileName);    

    if (null  == work){    

    抛出新的 异常(“创建Excel工作薄为空!” );     

    }    

    Sheet sheet =  null ;  //页数  

    行row =  null ;  //行数  

    Cell cell =  null ;  //列数  

    list =  new  ArrayList <List <Object >>();    

    //遍历的Excel中所有的片    

    for  (int  i =  0 ; i <work.getNumberOfSheets(); i ++){    

    sheet = work.getSheetAt(i);    

    if (sheet == null ){ continue ;}    

    //遍历当前片中的所有行    

    for  (int  j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j ++){    

    row = sheet.getRow(j);    

    if (row == null || row.getFirstCellNum()== j){ continue ;}    

    //遍历所有的列    

    列表<Object> li =  new  ArrayList <Object>();    

    for  (int  y = row.getFirstCellNum(); y <row.getLastCellNum(); y ++){    

    cell = row.getCell(y);    

    li.add(this .getValue(cell));    

    }    

    list.add(LI);    

    }    

    }    

    return 单    

    }    

    / **  

    *描述:根据文件后缀,自适应上传文件的版本   

    * @param inStr,fileName  

    * @返回  

    * @throws异常  

    * /    

    public   Workbook getWorkbook(InputStream inStr,String fileName)  throws  Exception {    

    工作簿wb =  null ;    

    String fileType = fileName.substring(fileName.lastIndexOf(“。” ));    

    if (excel2003L.equals(fileType)){    

    wb =  new  HSSFWorkbook(inStr);  // 2003-    

    } else if (excel2007U.equals(fileType)){     

    wb =  new  XSSFWorkbook(inStr);  // 2007 +    

    } else {    

    抛出新的 异常(“解析的文件格式有误!” );     

    }    

    返回 wb;    

    }    

    / **  

    *描述:对表格中数值进行格式化  

    * @param单元格  

    * @返回  

    * /    

    //解决擅长类型问题,获得数值    

    public   String getValue(Cell cell){    

    String value =  “” ;    

    if (null == cell){    

    返回 值    

    }    

    switch  (cell.getCellType()){    

    //数值型    

    案例 Cell.CELL_TYPE_NUMERIC:    

    if  (HSSFDateUtil.isCellDateFormatted(cell)){    

    //如果是date类型则,获取该单元格的日期值    

    Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());    

    SimpleDateFormat format =  new  SimpleDateFormat(“yyyy-MM-dd” );    

    value = format.format(date);;    

    } else  { //纯数字    

    BigDecimal big = new  BigDecimal(cell.getNumericCellValue());    

    value = big.toString();    

    //解决1234.0去掉后面的.0    

    if (null != value &&!“”. equals(value.trim())){    

    String [] item = value.split(“[。]” );    

    if (1 <item.length && “0” .equals(item [ 1 ])){    

    value = item [ 0 ];    

    }    

    }    

    }    

    break;    

    //字符串类型     

    案例 Cell.CELL_TYPE_STRING:    

    value = cell.getStringCellValue()。toString();    

    break;    

    //公式类型    

    案例 Cell.CELL_TYPE_FORMULA:    

    //读公式计算值    

    value = String.valueOf(cell.getNumericCellValue());    

    if  (value.equals(“NaN” )){ //如果获取的数据值为非法值,则转换为获取字符串    

    value = cell.getStringCellValue()。toString();    

    }    

    break;  

    //布尔类型    

    案例 Cell.CELL_TYPE_BOOLEAN:    

    value =  “” + cell.getBooleanCellValue();    

    break;    

    默认值:    

    value = cell.getStringCellValue()。toString();    

    }    

    if (“null” .endsWith(value.trim())){    

    value = “” ;    

    }    

    返回 值    

    }    

  • 二,定义两个实体类,一个是对于的Excel文件,解析它的数据(ExcelBean),另一个是导入数据库表的实体类(人)

    ExcelBean.java

  • <strong> <span style = “font-size:18px;” > import  org.apache.poi.xssf.usermodel.XSSFCellStyle;  

    公共类 ExcelBean  实现 java.io.Serializable {     

    private  String headTextName; //列头(标题)名    

    private  String propertyName; //对应字段名    

    私有 整数列; //合并单元格数    

    私人 XSSFCellStyle cellStyle;    

    public  ExcelBean(){    

    }    

    public  ExcelBean(String headTextName,String propertyName){    

    这个.headTextName = headTextName;    

    这个.propertyName = propertyName;    

    }    

    public  ExcelBean(String headTextName,String propertyName,Integer cols){    

    super ();    

    这个.headTextName = headTextName;    

    这个.propertyName = propertyName;    

    这个.cols = cols;    

    }     

    public  String getHeadTextName(){    

    return  headTextName;    

    }    

    public void  setHeadTextName(String headTextName){     

    这个.headTextName = headTextName;    

    }    

    public  String getPropertyName(){    

    return  propertyName;    

    }    

    public void  setPropertyName(String propertyName){     

    这个.propertyName = propertyName;    

    }    

    public  Integer getCols(){    

    返回列 ;    

    }    

    公共无效   setCols(Integer cols){    

    这个.cols = cols;    

    }    

    上市  XSSFCellStyle getCellStyle(){    

    返回  cellStyle;    

    }    

    公共无效   setCellStyle(XSSFCellStyle cellStyle){    

    这个 .cellStyle = cellStyle;    

    }    

    } </ span> </ strong>  

  • people.java

  • import  java.util.Date;  

    公共课 人   

    私有 整数id  

    private  String userName;  

    私人 字符串密码;  

    私人 整数年龄;  

    私人 日期;  

    public  Integer getId(){  

    返回  id  

    }  

    public void  setId(Integer id){   

    这个.id = id;  

    }  

    public  String getUserName(){  

    return  userName;  

    }  

    public void  setUserName(String userName){   

    这个.userName = userName ==  null  ? null  :userName.trim();  

    }  

    public  String getPassword(){  

    返回 密码  

    }  

    public void  setPassword(String password){   

    这个.password = password ==  null  ? null  :password.trim();  

    }  

    public  Integer getAge(){  

    回归 年龄  

    }  

    public void  setAge(Integer age){   

    这个.age = age  

    }  

    public  Date getDate(){  

    退货 日期  

    }  

    public void  setDate(Date date){   

    这个.date = date  

    }  

    }  

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式