zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    版权声明:如需转载,请注明!PS:如是转载随便,请忽略
  • 相关阅读:
    Mac下好玩的终端命令
    【bzoj3441】乌鸦喝水
    LeetCode[39]: 组合总和
    打击盗版,支持原创
    状态模式(State)-设计模式
    webpack核心概念
    吴裕雄--天生自然TensorFlow高层封装:Estimator-自定义模型
    吴裕雄--天生自然TensorFlow高层封装:Estimator-DNNClassifier
    吴裕雄--天生自然TensorFlow高层封装:Keras-TensorFlow API
    吴裕雄--天生自然TensorFlow高层封装:Keras-多输入输出
  • 原文地址:https://www.cnblogs.com/zwdx/p/7519342.html
Copyright © 2011-2022 走看看