SSM+poi導入和導出

最原始數據java

  導入成功後git

下載數據數據庫

下載後的數據顯示json

數據變成16條瀏覽器

點擊導出可選擇app

導了兩次  看數據變化ide

數據庫字段在下面地址給出工具

首先貼出Dao層ui

    List<User> findAll();
    
    void insertBatch(@Param("dataList") List<User> dataList);
      // 開始分頁
      // 分頁查詢
      List<User> findPager(@Param("pageno") Integer pageno, // 當前第幾頁(開始行號)
              @Param("pagesize") Integer pagesize, // 結束行號
              @Param("userName") String userName);
//
      int getTotal(@Param("userName") String userName);

這是service層方法this

 

    Pager<User> findPager(@Param("pageno") Integer pageno, // 當前第幾頁(開始行號)
            @Param("pagesize") Integer pagesize, // 結束行號
            @Param("userName") String userName);//參數
    
    void insertBatch(@Param("dataList") List<User> dataList);

這是service的實現類

 public User getUserById(int userId) {  
        // TODO Auto-generated method stub  
        return this.userDao.selectByPrimaryKey(userId);  
    }

    public Pager<User> findPager(Integer pageno, Integer pagesize, String userName) {
        Pager<User> pager = new Pager<>();
        //封裝分頁查詢結果集
        pager.setRows(userDao.findPager(pageno, pagesize, userName));
        //封裝分頁總頁數
        pager.setTotal(userDao.getTotal(userName));
    return pager;
    }

    //批量插入數據庫
    @Override
    public void insertBatch(List<User> dataList) {
        // TODO Auto-generated method stub
        userDao.insertBatch(dataList);
    }  
  

這是controller層 三個方法  一個遍歷全部數據 一個導入 一個導出

 

 @Resource  
     private IUserService userService;     
    private static Log log = LogFactory.getLog(ClientController.class);
 
    /**
     * 上傳Excel,讀取Excel中內容
     * @param file
     * @param request
     * @param response
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "/batchimport",method = RequestMethod.POST)
    public String batchimport(@RequestParam(value="filename") MultipartFile file,
            HttpServletRequest request,HttpServletResponse response) throws IOException{
        log.info("ClientController ..batchimport() start");
        String Msg =null;
        boolean b = false;
        
        //判斷文件是否爲空
        if(file==null){
            Msg ="文件是爲空!";
            request.getSession().setAttribute("msg",Msg);
            return "client/client";
        }
        
        //獲取文件名
        String name=file.getOriginalFilename();
        System.out.println(name);
        //進一步判斷文件是否爲空(即判斷其大小是否爲0或其名稱是否爲null)驗證文件名是否合格
        long size=file.getSize();
        if(name==null || ("").equals(name) && size==0 && !WDWUtil.validateExcel(name)){
            Msg ="文件格式不正確!請使用.xls或.xlsx後綴文檔。";
            request.getSession().setAttribute("msg",Msg);
            return "client/client";
        }
        
        //建立處理EXCEL
        ReadExcel readExcel=new ReadExcel();
        //解析excel,獲取客戶信息集合。
        List<User> dataList = readExcel.getExcelInfo(file);
        if(dataList != null && !dataList.toString().equals("[]") && dataList.size()>=1){
            b = true;
        }
        
        userService.insertBatch(dataList);

        if(b){

             //迭代添加客戶信息(注:實際上這裏也能夠直接將UserList集合做爲參數,在Mybatis的相應映射文件中使用foreach標籤進行批量添加。)
            for(User User:dataList){
                //這裏能夠作添加數據庫的功能
                System.out.println("第一個值:"+User.getUserName()+"\t第二個值:"+User.getPassword()+"\t第三個值:"+User.getAge());
            }
             Msg ="批量導入EXCEL成功!";
             request.getSession().setAttribute("msg",Msg);    
        }else{
             Msg ="批量導入EXCEL失敗!";
             request.getSession().setAttribute("msg",Msg);
        } 
       return "client/client";
    }


private static Logger log=LoggerFactory.getLogger(UserController.class);
     @Resource  
     private IUserService userService;     
    
    @RequestMapping("/list")
     public @ResponseBody String list(@RequestParam(value = "userName", required = false) String userName,
              @RequestParam(value="rows" , required = false)Integer rows,
              @RequestParam(value="page" , required = false)Integer page             ){
             Integer pageno = (page - 1) * rows;
            Integer pagesize = rows;
                 Pager<User> pager = userService.findPager(pageno,pagesize,userName);
                 JsonConfig jc = new JsonConfig();
                 JSON json = JSONSerializer.toJSON(pager,jc);
                return json.toString();
     }
    
    
    
  //導出excel
    @RequestMapping("/export.controller")
    public void export(String ids,HttpServletResponse response) throws IOException{
        // 只是讓瀏覽器知道要保存爲何文件而已,真正的文件仍是在流裏面的數據,你設定一個下載類型並不會去改變流裏的內容。
        //而實際上只要你的內容正確,文件後綴名之類能夠隨便改,就算你指定是下載excel文件,下載時我也能夠把他改爲pdf等。
        System.out.println(ids);
        response.setContentType("application/vnd.ms-excel");
        // 傳遞中文參數編碼
        String codedFileName = java.net.URLEncoder.encode("中文","UTF-8");
        response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xls");
        List<User> list = new ArrayList<User>();
        String[] array = ids.split(",");
        System.out.println(array);
        int[] id = new int[array.length];
        for (int i = 0; i < id.length; i++) {
            User user = userService.getUserById(Integer.valueOf(array[i]));
            // 將數據添加到list中
            list.add(user);
        }
        // 定義一個工做薄
        Workbook workbook = new HSSFWorkbook();
        // 建立一個sheet頁
        Sheet sheet = workbook.createSheet("用戶信息");
        // 建立一行
        Row row = sheet.createRow(0);
        // 在本行賦值 以0開始
        row.createCell(0).setCellValue("用戶id");
        row.createCell(1).setCellValue("用戶名");
        row.createCell(2).setCellValue("用戶密碼");
        row.createCell(3).setCellValue("用戶年齡");
        // 定義樣式
        CellStyle cellStyle = workbook.createCellStyle();
        // 格式化日期
        //cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
        // 遍歷輸出
        for (int i = 1; i <= list.size(); i++) {
            User user1 = list.get(i - 1);
            row = sheet.createRow(i);
            row.createCell(0).setCellValue(user1.getId());
            row.createCell(1).setCellValue(user1.getUserName());
            row.createCell(2).setCellValue(user1.getPassword());
            row.createCell(3).setCellValue(user1.getAge());

            }
        OutputStream  fOut = response.getOutputStream();
        workbook.write(fOut); 
        fOut.flush();  
        fOut.close(); 
    }
    
    
    
    
    
    

你們能夠去看源碼,都是借鑑網上資源整合的,當初找了個把星期,大多數沒有完整的純導入導出,如今奉獻給你們,輕踩勿噴,要的隨便拿,我放在碼雲上了https://gitee.com/wujianhui1996/SSM_POI 不會玩碼雲 demo在附件上。

還有三個工具類

字太多  我就不貼了  你們本身看  最重要的就是這兩個讀取下載的工具類了  還有一個封裝分頁的!

相關文章
相關標籤/搜索