1. 程式人生 > >Excel表實現資料匯入匯出

Excel表實現資料匯入匯出

 

資料匯入:

 @PostMapping("/imp")
    public String imp(@RequestPart("filePath") MultipartFile filePath) {

        //建立一個excel檔案
        HSSFWorkbook workbook = null;
        try {

            workbook = new HSSFWorkbook(filePath.getInputStream());  //獲取檔案
            Sheet sheet = workbook.getSheetAt(0); //
獲取第一個工作表 //迴圈工作表的資料 //getLastRowNum() 獲取行 for (int i = 0; i < sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i + 1); //下表是從0開始的所以 把行數設定為第二行從第二行開始讀 Cell cell = row.getCell(0); //獲取第一個單元格,以此類推 Cell cel2 = row.getCell(1); Cell cel3
= row.getCell(2); Cell cel4 = row.getCell(3); Cell cel5 = row.getCell(4); //獲取值 int id = (int) cell.getNumericCellValue(); String name = cel2.toString(); String sex = cel3.toString(); String education
= cel4.toString(); int monthly = (int) cel5.getNumericCellValue(); //把值放到物件 Staff staff = new Staff(id, name, sex, education, monthly); //呼叫mapper進行新增 int count = staffMapper.insert(staff); if (count > 0) { System.out.println("上傳成功"); } } } catch (IOException e) { e.printStackTrace(); } return "redirect:/emp"; }

資料匯出到本地:

  //把資料匯出到Excel中
    @GetMapping("/exc")

    public String derive(Model model, HttpSession session) {

        // 第一步,建立一個webbook,對應一個Excel檔案
        HSSFWorkbook wb = new HSSFWorkbook();

        // 第二步,在webbook中新增一頁,對應Excel檔案中的sheet
        HSSFSheet sheet = wb.createSheet("員工表一");

        // 第三步,在sheet中新增表頭第0行,注意老版本poi對Excel的行數列數有限制short
        HSSFRow row = sheet.createRow((int) 0);  //0代表第一行

        // 第四步,建立單元格,並設定值表頭 設定表頭居中
        HSSFCellStyle style = wb.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);


        HSSFCell cell = row.createCell((short) 0);
        cell.setCellValue("員工編號");
        cell.setCellStyle(style);

        cell = row.createCell((short) 1);
        cell.setCellValue("姓名");
        cell.setCellStyle(style);

        cell = row.createCell((short) 2);
        cell.setCellValue("性別");
        cell.setCellStyle(style);

        cell = row.createCell((short) 3);
        cell.setCellValue("學歷");
        cell.setCellStyle(style);

        cell = row.createCell((short) 4);
        cell.setCellValue("月薪");
        cell.setCellStyle(style);


        // 第五步,寫入實體資料 實際應用中這些資料從資料庫得到,
        List<Staff> list = staffMapper.selectAll();
        for (int i = 0; i < list.size(); i++) {
            row = sheet.createRow((int) i + 1);
            // 第四步,建立單元格,並設定值
            row.createCell((short) 0).setCellValue(list.get(i).getId());
            row.createCell((short) 1).setCellValue(list.get(i).getName());
            row.createCell((short) 2).setCellValue(list.get(i).getSex());
            row.createCell((short) 3).setCellValue(list.get(i).getEducation());
            row.createCell((short) 4).setCellValue(list.get(i).getMonthly());
        }
        // 第六步,將檔案存到指定位置
        try {
            FileOutputStream fout = new FileOutputStream("E:\\aaa.xls");
            wb.write(fout);
            fout.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        session.setAttribute("add","資料匯出成功");
        return "redirect:/emp";
    }