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"));
    
                }
  • 相关阅读:
    推荐体系算法总结
    Springboot 多模块调用,找不到注入的类
    LRU算法
    在SQLServer中连接另一个SQLServer库数据,在Oracle中连接另一个Oracle库数据,在SQL Server中连接Oracle数据,在Oracle中连接SQL Server数据
    用C#实现木马程序
    CSS filter 滤镜可视化配置
    微信小程序农历日期选择器 lunarpicker
    ms Sql 数据库出现 “提供的统计信息流已损坏”的解决办法。
    自制《要塞:十字军东征》无限金钱修改器
    c#+Winform实现自定义的“复制、粘贴”右键快捷菜单,多个控件共享使用一个右键菜单。
  • 原文地址:https://www.cnblogs.com/shexunyu/p/13343797.html
Copyright © 2011-2022 走看看