首页 > 编程语言 >java将List<Map<String,Object>>导出Excel

java将List<Map<String,Object>>导出Excel

时间:2022-11-28 11:12:45浏览次数:44  
标签:headList sheet wb get List Excel filename mapList java

遇到了个需要导出Excel的需求,经过百度查到方法在此记录一下:

public static void  createExcel(List<Map<String, Object>> mapList, String filename, String title, HttpServletResponse response) {
        //获取数据源的 key, 用于获取列数及设置标题
        Map<String, Object> map = mapList.get(0);
        Set<String> stringSet = map.keySet();
        ArrayList<String> headList = new ArrayList<>(stringSet);
        //定义一个新的工作簿
        XSSFWorkbook wb = new XSSFWorkbook();
        //创建一个Sheet页
        XSSFSheet sheet = wb.createSheet(title);
        //设置行高
        sheet.setDefaultRowHeight((short) (2 * 256));
        //为有数据的每列设置列宽
        for (int i = 0; i < headList.size(); i++) {
            sheet.setColumnWidth(i, 8000);
        }
        //设置单元格字体样式
        XSSFFont font = wb.createFont();
        font.setFontName("等线");
        font.setFontHeightInPoints((short) 16);
        //在sheet里创建第一行,并设置单元格内容为 title (标题)
        XSSFRow titleRow = sheet.createRow(0);
        XSSFCell titleCell = titleRow.createCell(0);
        titleCell.setCellValue(title);
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, headList.size() - 1));
        // 创建单元格文字居中样式并设置标题单元格居中
        XSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
        titleCell.setCellStyle(cellStyle);

        //获得表格第二行
        XSSFRow row = sheet.createRow(1);
        //根据数据源信息给第二行每一列设置标题
        for (int i = 0; i < headList.size(); i++) {
            XSSFCell cell = row.createCell(i);
            cell.setCellValue(headList.get(i));
        }
        XSSFRow rows;
        XSSFCell cells;
        //循环拿到的数据给所有行每一列设置对应的值
        for (int i = 0; i < mapList.size(); i++) {
            //在这个sheet页里创建一行
            rows = sheet.createRow(i + 2);
            //给该行数据赋值
            for (int j = 0; j < headList.size(); j++) {
                String value;
                if (mapList.get(i).get(headList.get(j)) !=null){
                    value = mapList.get(i).get(headList.get(j)).toString();
                }else {
                    value = "";
                }
                cells = rows.createCell(j);
                cells.setCellValue(value);
            }
        }
        try {
            response.setContentType("application/vnd.ms-excel");
            filename = URLEncoder.encode(filename, "UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename="
                    .concat(filename));
            OutputStream out = response.getOutputStream();
            wb.write(out);
            wb.close();
            out.close();;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

标签:headList,sheet,wb,get,List,Excel,filename,mapList,java
From: https://www.cnblogs.com/ssbxfsrm/p/16931655.html

相关文章

  • 运行 JavaScript 代码片段
    原文链接​​RunsnippetsofJavaScript​​--作者​​KayceBasques​​&​​SofiaEmelianova​​如果你发现自己反复使用​​Console​​来运行同一份代码,那么......
  • Java集合之ArrayList和LinkedList
    1ArrayList和LinkedListArrayList和LinkedList是平常经常用到的两种集合1.1对于两者的底层ArrayList的底层是使用的数组,而LinkedList的底层使用双向链表1//Array......
  • Java数组排序
       今天,巩固教大家数组排序方法,我将介绍以下这几种方式:快速排序,冒泡排序,选择排序。1、快速排序这就是各位学Java的福利了,Java提供sort()方法,咱们只......
  • java利用递归实现扫雷
    package扫雷;importjava.math.*;importjava.util.Scanner;publicclass扫雷{//记录翻开次数staticintk=0;//两个数组......
  • 论Java的重要性
    最近,最新的世界编程语言排名最近出炉了,Java位居世界第一。    不仅如此,Java以17.856%超过第二名C语言的8.726%两倍以上,其实,这一现象是十分反常的,因为,在前几年,Java......
  • 大趋智能打印机java api
    对接飞鹅和易联云后,网上几乎没资料对大趋智能打印机javaapi分享,故此分享一波。官方文档地址SnParam.javapackagecom.shanheyongmu.openapi.param;importlombok......
  • 简单记录JAVA浮点类型判断BUG
    //0.3*1==0.3结果:trueSystem.out.println("0.3*1==0.3结果:"+(0.3*1==0.3));//0.1*3==0.3结果:falseSystem.out.println("0.......
  • java技术架构图
    架构图有哪几种  业务架构:需求初期业务的结果和过程描述一般比较模糊,可能来自于某个老板、运营或用户的反馈。客户说海尔洗衣机洗土豆会堵,海尔立马设计专门的土豆洗......
  • salesforce零基础学习(一百二十二)通过 excel / csv创建 object
    本篇参考:https://help.salesforce.com/s/articleView?id=sf.dev_objectcreate_task_lex_from_spreadsheet.htm&type=5背景:当客户给我们N个表的数据,告诉我们需要创建一些......
  • Java基础语法
          ......