SSM将Excel表中数据存放在数据库中

转自:点击查看

mapper.java、mapper.xml和实体类也可以通过逆向工程产生。

1、maven配置相应jar

 
            org.apache.poi
            poi
            3.8-beta3
            jar
            compile
        
         
            org.apache.poi
            poi-ooxml
            3.9
            jar
        

2、创建excel工具类文件ExcelUtils

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>对象 
     * @param in,fileName 
     * @return 
     * @throws IOException  
     */  
    public  List> getBankListByExcel(InputStream in,String fileName) throws Exception{  
        List> list = null;  

        //创建Excel工作薄  
        Workbook work = this.getWorkbook(in,fileName);  
        if(null == work){  
            throw new Exception("创建Excel工作薄为空!");  
        }  
        Sheet sheet = null;  //页数
        Row row = null;  //行数
        Cell cell = null;  //列数

        list = new ArrayList>();  
        //遍历Excel中所有的sheet  
        for (int i = 0; i < work.getNumberOfSheets(); i++) {  
            sheet = work.getSheetAt(i);  
            if(sheet==null){continue;}  

            //遍历当前sheet中的所有行  
            for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {  
                row = sheet.getRow(j);  
                if(row==null||row.getFirstCellNum()==j){continue;}  

                //遍历所有的列  
                List li = new ArrayList();  
                for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {  
                    cell = row.getCell(y);  
                    li.add(this.getValue(cell));  
                }  
                list.add(li);  
            }  
        }  

        return list;  

    }  

    /** 
     * 描述:根据文件后缀,自适应上传文件的版本  
     * @param inStr,fileName 
     * @return 
     * @throws Exception 
     */  
    public  Workbook getWorkbook(InputStream inStr,String fileName) throws Exception{  
        Workbook 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{  
            throw new Exception("解析的文件格式有误!");  
        }  
        return wb;  
    }  

    /** 
     * 描述:对表格中数值进行格式化 
     * @param cell 
     * @return 
     */  
  //解决excel类型问题,获得数值  
    public  String getValue(Cell cell) {  
        String value = "";  
        if(null==cell){  
            return value;  
        }  
        switch (cell.getCellType()) {  
        //数值型  
        case Cell.CELL_TYPE_NUMERIC:  
            if (HSSFDateUtil.isCellDateFormatted(cell)) {  
                //如果是date类型则 ,获取该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 
  

3、实体类people.java

public class people {
    private Integer id;

    private String userName;

    private String password;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

}

4、创建peopleMapper.java

public interface peopleMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(people record);

    int insertSelective(people record);

    people selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(people record);

    int updateByPrimaryKey(people record);

    void insertInfoBatch(List list);
}

peopleMapper.xml

                                                                                              
                         
                                                                             
                                                                   
                                                                                  
                                                                 
                                                                                                                                  
                                                                                                                         
                                                                                                         
    id, username, password                                                                                             
                                                                                                                               
                                                                                                                            
                                                                  
    delete from people                                                                                                               
    where id = #{id,jdbcType=INTEGER}                                                                                                
                                                                                                                            
                                                                    
    insert into people (id, username, password)                                                                                                                     
    values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR})                                                                                
                                                                                                                            
                                                           
    insert into people                                                                                                               
                                                                                    
                                                                                                              
        id,                                                                                                                          
                                                                                                                                
                                                                                                        
        username,                                                                                                                   
                                                                                                                                
                                                                                                        
        password,                                                                                                                    
                                                                                                                                

                                                                                                                              
                                                                             
                                                                                                              
        #{id,jdbcType=INTEGER},                                                                                                      
                                                                                                                                
                                                                                                        
        #{userName,jdbcType=VARCHAR},                                                                                                
                                                                                                                                
                                                                                                        
        #{password,jdbcType=VARCHAR},                                                                                                
                                                                                                                                                                                                                                              
                                                                                                                              
                                                                                                                            
                                               
    update people                                                                                                                    
                                                                                                                               
                                                                                                        
        user_name = #{userName,jdbcType=VARCHAR},                                                                                    
                                                                                                                                
                                                                                                        
        password = #{password,jdbcType=VARCHAR},                                                                                     
                                                                                                                                                                                                                                     
                                                                                                                               
    where id = #{id,jdbcType=INTEGER}                                                                                                
                                                                                                                            
                                                        
    update people                                                                                                                    
    set username = #{userName,jdbcType=VARCHAR},                                                                                    
      password = #{password,jdbcType=VARCHAR}                                                                                                                                                                           
    where id = #{id,jdbcType=INTEGER}                                                                                                
         


  
  insert into people (id, username, password)                                                                                                                     
    values  
    
    (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR})   
    
                                                                                                                   
                                                                                                                            

5、service层 
创建peopleService.java

public interface PeopleService {
    String ajaxUploadExcel(HttpServletRequest request,HttpServletResponse response);
}

创建peopleServiceImpl.java

@Service("PeopleService")
public class PeopleServiceImpl implements PeopleService{

    @Resource(name="peopleMapper")
    private  peopleMapper peopleMapper;

    public String ajaxUploadExcel(HttpServletRequest request,HttpServletResponse response){
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;    

        MultipartFile file = multipartRequest.getFile("file");  
        if(file.isEmpty()){  
            try {
                throw new Exception("文件不存在!");
            } catch (Exception e) {
                e.printStackTrace();
            }  
        }  

        InputStream in =null;  
        try {
            in = file.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }  

        List> listob = null; 
        try {
            listob = new ExcelUtils().getBankListByExcel(in,file.getOriginalFilename());
        } catch (Exception e) {
            e.printStackTrace();
        }   
           for (int i = 0; i < listob.size(); i++) { 
            /*   List lo = listob.get(i); 
               if (lo.get(i)=="") {
                    continue;
                }*/
               System.out.println(listob.get(i));

           }
        for (int i = 0; i < listob.size(); i++) {  
            List lo = listob.get(i);  
            people vo = new people(); 
            people j = null;

            try {
                j = peopleMapper.selectByPrimaryKey(Integer.valueOf(String.valueOf(lo.get(0))));
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                System.out.println("数据库中无该条数据,新增");

            }
                vo.setId(Integer.valueOf(String.valueOf(lo.get(0))));    
                vo.setUserName(String.valueOf(lo.get(1)));  
                vo.setPassword(String.valueOf(lo.get(2)));   

            if(j == null)
            {

                    peopleMapper.insert(vo);
                    System.out.println("susscess");
            }
            else
            {
                    peopleMapper.updateByPrimaryKey(vo);
            }

        }   

        return "文件导入成功!";
    }
    } 
  

6、Contrller层 
创建ExcelController.java

@Controller  
@RequestMapping("/upload")    
public class ExcelController {  

     @Resource(name="PeopleService")
    private PeopleService PeopleService;
   @ResponseBody  
   @RequestMapping(value="ajaxUpload.do",method={RequestMethod.GET,RequestMethod.POST})  
   public String ajaxUploadExcel(HttpServletRequest request,HttpServletResponse response) throws Exception {  
       return PeopleService.ajaxUploadExcel(request, response);
   } 

7、前端页面 
前端使用的是layui,此处贴出关键代码

选完文件后不自动上传

8、excel表中格式

 

ID USERNAME  PASSWORD
3 rr    rr123
4 jj2     jjp

 

 

你可能感兴趣的:(SSM操作Excel)