JAVA 使用POI导出数据格式为Execl

简介: 需要下载一个poi的jar包。 控制器 @Override public void getContractListExecl(Contract contract, BindingResult result, HttpServletRequest req, ...

 需要下载一个poi的jar包。

控制器

@Override
    public void getContractListExecl(Contract contract, BindingResult result, HttpServletRequest req,
            HttpServletResponse response) throws IOException {
     
        List<Map<String, Object>> sttList = contractService.getContracts(contract);// 得到需要导出的数据
        int i = 0;
        // 第一步,创建一个webbook,对应一个Excel文件
        @SuppressWarnings("resource")
        HSSFWorkbook wb = new HSSFWorkbook();
        // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
        HSSFSheet sheet = wb.createSheet("title");
         // 设置表格默认列宽度为15个字节  
        sheet.setDefaultColumnWidth((short) 20);
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
        HSSFRow row = sheet.createRow(i);
        // 第四步,创建单元格,并设置值表头 设置表头居中
        HSSFCellStyle style = wb.createCellStyle();
        style.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 创建一个居中格式

        HSSFCell cell = row.createCell(0);
        cell.setCellValue("用户姓名");
        cell.setCellStyle(style);
        cell = row.createCell(1);

        cell.setCellValue("电话");
        cell.setCellStyle(style);
        cell = row.createCell(2);

        cell.setCellValue("家庭医生团队名称");
        cell.setCellStyle(style);
        cell = row.createCell(3);

        cell.setCellValue("服务办理人姓名");
        cell.setCellStyle(style);
        cell = row.createCell(4);

        cell.setCellValue("服务办理人电话");
        cell.setCellStyle(style);
        cell = row.createCell(5);

        cell.setCellValue("服务办理人代码");
        cell.setCellStyle(style);
        cell = row.createCell(6);

        cell.setCellValue("完成签约时间");
        cell.setCellStyle(style);
        cell = row.createCell(7);

        cell.setCellValue("服务完成ITV编码");
        cell.setCellStyle(style);
        cell = row.createCell(8);

        cell.setCellValue("服务完成时间");
        cell.setCellStyle(style);
        cell = row.createCell(9);

        

        for (Map<String, Object> row_ : sttList) {
            row = sheet.createRow(++i);
            // 第四步,创建单元格,并设置值
            row.createCell(0)
                    .setCellValue(row_.get("userName") == null ? "###" : row_.get("userName").toString());
            row.createCell(1)
                    .setCellValue(row_.get("userPhone") == null ? "###" : row_.get("userPhone").toString());
            row.createCell(2).setCellValue(row_.get("dgName") == null ? "###" : row_.get("dgName").toString());
            row.createCell(3)
                    .setCellValue(row_.get("proxyName") == null ? "###" : row_.get("proxyName").toString());
            row.createCell(4).setCellValue(row_.get("proxyPhone") == null ? "###" : row_.get("proxyPhone").toString());
            row.createCell(5).setCellValue(row_.get("proxyCode") == null ? "###" : row_.get("proxyCode").toString());
            row.createCell(6).setCellValue(row_.get("updateTime") == null ? "###" : row_.get("updateTime").toString());
            row.createCell(7).setCellValue(row_.get("itvToken") == null ? "###" : row_.get("itvToken").toString());
            row.createCell(8).setCellValue(row_.get("itvUpdateTime") == null ? "###" : row_.get("itvUpdateTime").toString());
            
            
        }
        String fileName = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        response.setHeader("content-disposition",
                "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1") + ".xls");
        OutputStream fout = response.getOutputStream();
        wb.write(fout);
        fout.close();
    }

}

 前端调用该接口就可以了!

效果图:

 

相关文章
|
Java API Apache
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
945 4
|
缓存 easyexcel Java
Java EasyExcel 导出报内存溢出如何解决
大家好,我是V哥。使用EasyExcel进行大数据量导出时容易导致内存溢出,特别是在导出百万级别的数据时。以下是V哥整理的解决该问题的一些常见方法,包括分批写入、设置合适的JVM内存、减少数据对象的复杂性、关闭自动列宽设置、使用Stream导出以及选择合适的数据导出工具。此外,还介绍了使用Apache POI的SXSSFWorkbook实现百万级别数据量的导出案例,帮助大家更好地应对大数据导出的挑战。欢迎一起讨论!
1654 1
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
1765 0
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
198 2
|
Java Apache Maven
Java中使用poi+poi-tl实现根据模板导出word文档
这个过程不仅简化了文档生成的工作,而且保证了生成文档的一致性与准确性,特别适合于那些需要生成大量文档的自动化场景。通过以上步骤,Java开发人员可以实现高效、可靠的Word文档导出功能。
3603 0
|
Java 数据安全/隐私保护
Java无模版导出Excel 0基础教程
经常写数据导出到EXCEL,没有模板的情况下使用POI技术。以此作为记录,以后方便使用。 2 工具类 样式工具: 处理工具Java接口 水印工具 导出Excel工具类 3 测试代码 与实际复杂业务不同 在此我们只做模拟 Controller Service 4 导出测试 使用Postman进行接口测试,没接触过Postman的小伙伴可以看我这篇博客Postman导出excel文件保存为文件可以看到导出很成功,包括水印 sheet页名称自适应宽度。还有一些高亮……等功能可以直接搜索使用
367 0
Java无模版导出Excel 0基础教程
|
easyexcel Java Apache
EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File
EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File
1928 0
使用JProfile查看java导出内存快照
使用JProfile查看java导出内存快照
380 0
|
存储 Java Maven
如何在Java中导入和导出CSV文件
如何在Java中导入和导出CSV文件
1255 2