Java poi 導出Excel並下載到客戶端


Maven配置,包含了其他文件格式的依賴,就全貼出來了

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-excelant</artifactId>
            <version>3.12</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.12</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.8</version>
        </dependency>

Service層

@Override
    public void export(Long sblsh, String excelName, OutputStream out) {
        try {
            // 第一步,創建一個webbook,對應一個Excel文件  
            HSSFWorkbook wb = new HSSFWorkbook();
            //生成一個表格  
            HSSFSheet sheet = wb.createSheet(excelName); 
            // 第三步,在sheet中添加表頭第0行
            HSSFRow row = sheet.createRow(0);
            
            // 第四步,創建單元格,並設置值表頭 設置表頭居中  
            HSSFCellStyle style = wb.createCellStyle();  
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 創建一個居中格式
            HSSFCell cell = row.createCell(0);
            cell.setCellStyle(style);
            
            Byte kjzz = qyjbxxMapper.getKjzz(sblsh);
            List<A> record = this.selectBySblsh(sblsh);
                this.insertData(wb, sheet, row, record, out);
            }
        } catch (Exception e) {
            logger.info(e.getMessage());
        }
    }
    
    /**
     * 導入數據到表格中
     * @param wb execl文件
     * @param sheet 表格
     * @param row 表格行
     * @param record 要導出的數據
     * @param out 輸出流
     */
    private void insertData(HSSFWorkbook wb,HSSFSheet sheet,HSSFRow row,List<A> record,
            OutputStream out){
        try {
            row = sheet.createRow(1);
            for(int i=0;i<title.length;i++){
                row.createCell(i).setCellValue(title[i]);
            }
            for(int i=0;i<record.size();i++){
                row = sheet.createRow(i+2);
                A data = record.get(i);
                row.createCell(0).setCellValue(data.getHc());
                row.createCell(1).setCellValue(data.getXm());
                BigDecimal je = data.getJe();
                if(je!=null){
                    row.createCell(2).setCellValue(je.doubleValue());
                }
            }
            //合並單元格,前面2位代表開頭結尾行,后面2位代表開頭結尾列
            CellRangeAddress region = new CellRangeAddress(0,0,0,title.length-1);
            sheet.addMergedRegion(region);
            wb.write(out);
            out.flush();
            out.close();
            wb.close();
        } catch (Exception e) {
            logger.info(e.getMessage());
        }
    }

Controller

@RequestMapping("/export")
    public void export(Long sblsh, HttpServletRequest request, HttpServletResponse response){
        response.setContentType("octets/stream");
        String excelName = "文件名";
        try {
            response.addHeader("Content-Disposition", "attachment;filename="+new String(excelName.getBytes("gb2312"), "ISO8859-1" )+".xls");
            OutputStream out = response.getOutputStream();
            aService.export(sblsh,excelName ,out);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM