IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> list<map>数据,生成execl并下载(动态生成execl) -> 正文阅读

[开发测试]list<map>数据,生成execl并下载(动态生成execl)

	/**
     * 将list<map>数据插入到execl 并下载
     * @param response 返回请求信息
     * @param filedNames execl标题名
     * @param titleName 生成的execl文件的名称
     * @param failList  插入的数据
     * @throws Exception 异常
     */
    public void createFailExcel(HttpServletResponse response,String[] filedNames,
                                  String titleName,List<Map<String, String>> failList) throws Exception {
        List<LinkedHashMap> linkedHashMapList=new LinkedList<>();
        //转换
        for (Map<String,String> map : failList){
            LinkedHashMap linkedHashMap=new LinkedHashMap();
            linkedHashMap=getMapValueForLinkedHashMap(map);
            linkedHashMapList.add(linkedHashMap);
        }
        exportToExcel(response,filedNames,titleName,linkedHashMapList);
    }
    
 
    
	/**
     * 将Map转换为LinkedHashMap(不带key)
     * @param dataMap
     * @return
     */
    public static LinkedHashMap getMapValueForLinkedHashMap(Map dataMap) {
        LinkedHashMap returnMap = new LinkedHashMap();
        if (ObjectUtils.isEmpty(dataMap)) {
            return returnMap;
        }
        Iterator iterator = dataMap.keySet().iterator();
        while (iterator.hasNext()) {
            Object objKey = iterator.next();
            Object objValue = dataMap.get(objKey);
            if (objValue instanceof Map) {
                returnMap.put(objKey, getMapValueForLinkedHashMap((Map) objValue));
            } else {
                returnMap.put(objKey, objValue);
            }
        }
        return returnMap;
    }
 	/**
     * 导出Excel.
     *
     * @param response
     * @param filedNames  excel标题&字段 此参数为map,实例为new LinkedHashMap<String, Object>();
     * @param titleName   导出文件名
     * @param filedParams 内容范例.
     */
    public static void exportToExcel(final HttpServletResponse response, final String[] filedNames,
                                     final String titleName, final List<LinkedHashMap> filedParams) {
        // 第一步,创建一个webbook,对应一个Excel文件
        final XSSFWorkbook wb = new XSSFWorkbook();
        // HSSFWorkbook wb = new HSSFWorkbook();
        // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
        final XSSFSheet sheet = wb.createSheet(titleName);
        // 设置表格默认列宽度为25个字节
        sheet.setDefaultColumnWidth(25);
        sheet.autoSizeColumn(0);
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
        XSSFRow row = sheet.createRow(0);
        // 第四步,创建单元格,并设置值表头设置表头居中
        final XSSFCellStyle style = wb.createCellStyle();
        style.setWrapText(true);
        //数据样式居中
        style.setAlignment(HorizontalAlignment.CENTER);
        // 声明列对象
        XSSFCell cell = null;
        Iterator<LinkedHashMap> it = filedParams.iterator();
        try {
            int i = 0;
            // 创建标题
            for (String filed : filedNames) {
                cell = row.createCell(i);
                cell.setCellValue(filed);
                cell.setCellStyle(style);
                i++;
            }

            int index = 0;
            while (it.hasNext()) {
                index++;
                row = sheet.createRow(index);
                Map<String, Object> data = it.next();
                int j = 0;
                //设置序号
                if (!data.isEmpty()) {
                    cell = row.createCell(j);
                    cell.setCellStyle(style);
                    cell.setCellValue(index);
                    j++;
                }
                for (String key : data.keySet()) {
                    cell = row.createCell(j);
                    cell.setCellStyle(style);
                    XSSFRichTextString text = new XSSFRichTextString(data.get(key) + "");
                    cell.setCellValue(text);
                    j++;
                }
            }
            // 文件名
            String fileName;
            final SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
            final Date date = new Date();
            final String time = format.format(date);
            // 输出的文件名+以毫秒为单位返回当前时间
            // ISO8859-1不能改为UTF-8,否则文件名是乱码
            fileName = URLEncoder.encode(titleName + time + ".xlsx", "UTF-8");
            // application应用;octet-stream八进制;charset字符集(请求应用)
            response.setContentType("application/octet-stream;charset=UTF-8");
            // Content-Disposition内容配置;attachment附件;(下载完成提示)
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            final OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 23:01:13  更:2022-04-07 23:01:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 1:43:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码