zoukankan      html  css  js  c++  java
  • Rest导出Excel文件流

    Rest参数入口添加此参数 HttpServletResponse response
     Workbook workbook = new XSSFWorkbook();
                //region 兼容2003版本
                /*SecurityUser securityUser = getSecurityUserInfo();  //此行代码报错
                SysImporterItemEx sysImporterItemEx = sysImportItemImpl.selectByPrimaryKey(securityUser.getUserId(), itemId);
                if(sysImporterItemEx!=null&&sysImporterItemEx.getFileType().equals("xls"))
                {
                    workbook=new HSSFWorkbook();
                }*/
                //endregion
                //region  获取mapping表,获取到列的排序
                Iterator<Map.Entry<String, List<HashMap>>> hashMapTempIterator = hashMapTemp.entrySet().iterator();
                while (hashMapTempIterator.hasNext()) {
                    Map.Entry<String, List<HashMap>> entry = hashMapTempIterator.next();
                    String sheetName = entry.getKey();
                    // 生成一个表格
                    Sheet sheet;
                    sheet = workbook.createSheet(sheetName);
                    List<SysItemMappingDto> itemMappingDtos = new ArrayList<SysItemMappingDto>();
                    for (SysImporterItemDetailDo sysImporterItemDetailDo : detailDos) {
                        if (sysImporterItemDetailDo.getSheetName().equals(sheetName)) {
                            itemMappingDtos = itemMappingImpl.selectByDetailId(sysImporterItemDetailDo.getId());
                        }
                    }
                    //  数据行
                    int index = -1;
                    //第一行添加英文列名或标题
                    Row row = sheet.createRow(++index);
                    int cellIndex = -1;
                    if (itemMappingDtos.size() <= 0) {
                        Cell cell = row.createCell(0);
                        cell.setCellValue("没有找到mapping表数据信息");
                    }
                    for (SysItemMappingDto sysItemMappingDto : itemMappingDtos) {
                        Cell cell = row.createCell(++cellIndex);
                        cell.setCellValue(sysItemMappingDto.getSourceKey());
                    }
                    row = sheet.createRow(++index);
                    cellIndex = -1;
                    //第二行中文列名或标题
                    for (SysItemMappingDto sysItemMappingDto : itemMappingDtos) {
                        Cell cell = row.createCell(++cellIndex);
                        cell.setCellValue(sysItemMappingDto.getSourceName());
                    }
                    //第三行之后都是数据行
                    List<HashMap> list = entry.getValue();
                    for (HashMap hashmapTemp : list) {
                        //增加行
                        row = sheet.createRow(++index);
                        cellIndex = -1;
                        for (SysItemMappingDto sysItemMappingDto : itemMappingDtos) {
                            //添加列值
                            Cell cell = row.createCell(++cellIndex);
                            String value = (String) hashmapTemp.get(sysItemMappingDto.getSourceKey());
                            cell.setCellValue(value);
                        }
    
                    }
                }
                //endregion
                //region 设置返回文件流
                if (response != null) {
                    //response.setContentType("application/vnd.ms-excel;charset=utf-8");
                    //response.setHeader("Content-Disposition", "attachment;filename="" + new String((itemId + ".xls").getBytes("gb2312"), "ISO8859-1"));
                    OutputStream out = response.getOutputStream();
                    workbook.write(out);
                    out.close();
    
                    response.setContentType("application/msdownload");
                    response.setCharacterEncoding("utf-8");
                    response.setHeader("Content-disposition", "attachment; filename="
                            + URLEncoder.encode(itemId, "UTF-8"));
    
                }
  • 相关阅读:
    eclipse如何设置多个字符的智能提示
    19.面向对象的三大特征 之封装
    18代码块
    成员变量和局部变量的区别
    类与对象
    Python压缩脚本编辑
    字符串内容
    参考
    序列
    元组
  • 原文地址:https://www.cnblogs.com/shexunyu/p/13343797.html
Copyright © 2011-2022 走看看