springboot excel 视图(poi)

应用:使用视图将数据导出,保存到excel文件中

说明:可直接使用easyexcel下载数据,保存到excel文件

*******************

相关类与接口

AbstractXlsView

public abstract class AbstractXlsView extends AbstractView {public AbstractXlsView() {this.setContentType("application/vnd.ms-excel");}protected boolean generatesDownloadContent() {return true;}protected final void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {Workbook workbook = this.createWorkbook(model, request);this.buildExcelDocument(model, workbook, request, response);response.setContentType(this.getContentType());this.renderWorkbook(workbook, response);}protected Workbook createWorkbook(Map<String, Object> model, HttpServletRequest request) {return new HSSFWorkbook();}protected void renderWorkbook(Workbook workbook, HttpServletResponse response) throws IOException {ServletOutputStream out = response.getOutputStream();workbook.write(out);workbook.close();}protected abstract void buildExcelDocument(Map<String, Object> var1, Workbook var2, HttpServletRequest var3, HttpServletResponse var4) throws Exception;
}

*******************

示例

*************

pojo 层

Person

@Data
public class Person {private Integer id;private String name;private Integer age;
}

*************

controller 层

HelloController

@RestController
public class HelloController {@RequestMapping("/hello")public ModelAndView hello(ModelAndView mv){mv.addObject("list",data());mv.setView(initView("测试数据"));return mv;}@SuppressWarnings("unchecked")private View initView(String fileName){return new AbstractXlsView() {@Overrideprotected void buildExcelDocument(Map<String, Object> map, Workbook workbook, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {if (fileName !=null){httpServletResponse.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(fileName, StandardCharsets.UTF_8)+".xlsx");}List<Person> list=(List<Person>)(map.get("list"));Sheet sheet=workbook.createSheet();Row head=sheet.createRow(0);head.createCell(0).setCellValue("id");head.createCell(1).setCellValue("name");head.createCell(2).setCellValue("age");for (int i=0;i<list.size();i++){Person person=list.get(i);Row row=sheet.createRow(i+1);row.createCell(0).setCellValue(person.getId());row.createCell(1).setCellValue(person.getName());row.createCell(2).setCellValue(person.getAge());}}};}private List<Person> data(){List<Person> list=new ArrayList<>();for (int i=0;i<5;i++){Person person=new Person();person.setId(i);person.setName("瓜田李下 "+i);person.setAge(20+i);list.add(person);}return list;}
}

*******************

使用测试

localhost:8080/hello

springboot excel 视图(poi)相关推荐

  1. SpringBoot中使用POI导出Excel时怎样循环数据库数据赋值

    场景 SpringBoot中使用POI实现自定义Excel布局式导出: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/894977 ...

  2. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  3. SpringMVC自定义视图 Excel视图和PDF视图

    一.自定义视图-Excel视图 1.Maven依赖 引入POI <dependency><groupId>org.apache.poi</groupId><a ...

  4. Spring MVC 中自定义视图 @Component 及 配置 多个视图解析器 Excel视图

    首先我们建立一个自己的View实现View接口.要注意在类上面加上@Component的注解,因为看BeanNameViewResolver的源码知道,是直接从ioc容器里面拿的根据名字拿的视图,所以 ...

  5. Excel的poi缓存问题

    Excel的poi缓存问题 背景: 最近工作需要,需要完成生成新的Excel,然后从Excel中读取包含公式的文本内容. 问题: 当程序中修改公式对应的单元格数据变化时,公式获取的值仍然还是原来的值, ...

  6. java写入excel文件poi

    java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils;import java.io.File; import jav ...

  7. Excel导入poi、导出poi

    Excel导入poi.导出poi 依赖Jar包 <!-- 处理Excel2003 --> <dependency><groupId>org.apache.poi&l ...

  8. Java操作Excel之POI:java读写excel文件以及打印设置

    Java操作Excel之POI:java读写excel文件以及打印设置 POI的jar包下载地址:http://poi.apache.org/download.html 注意:项目中导入poi 4.0 ...

  9. JAVA实现数据库数据导入/导出到Excel(POI)

    原文地址为: JAVA实现数据库数据导入/导出到Excel(POI) 准备工作: 1.导入POI包:POI下载地址http://mirrors.tuna.tsinghua.edu.cn/apache/ ...

最新文章

  1. arm-linux-g 找不到头文件,交叉编译错误“ arm-none-eabi-g ++找不到条目符号”
  2. 个人管理 - 书籍推荐(待读)
  3. 环信SDK 踩坑记webIM篇(二)
  4. vs2017调用linux脚本,[代码] ShellExecute调用外部程序_VS2017
  5. 如何解决EXCEL中的科学计数法
  6. TensorFlow 教程 --新手入门--1.4 win10环境安装实例
  7. Python int() 函数
  8. Jmeter启动报错解决方案
  9. Linux定义多个标准输入输出,言简意赅解释Linux中的标准输入输出
  10. 网站安全之密码明文传输漏洞
  11. [Database] 不知道表名和字段查找值=1234的数据.
  12. SoapUI接口测试——添加断言(检查点)——Assertion
  13. [日常摸鱼]Luogu2878 [USACO07JAN]Protecting the Flowers
  14. 1156 Sexy Primes – PAT甲级真题
  15. win10系统文件拖拽卡顿_如何解决Win10鼠标拖动窗口有延迟?
  16. C#开发之——MonthCalendar(12.18)
  17. 核心大小1M的VIN码OCR识别核心
  18. MATLAB应用——曲线长度的求解
  19. 致远OA合并处理策略
  20. [VB.NET] - Rs232 通讯 COM口

热门文章

  1. 【常用代理方法-花生壳-ngrok-frp】
  2. python圆形噪点_python模块PIL-获取带噪点噪线的随机验证码
  3. Java后端学习框架(2020)
  4. 计算与存储的关系 GemFire工作原理
  5. android l 发布,Android L发布:细说Android甜品进化史
  6. 年度最佳50句丧格言,让你看完怀疑人生
  7. Echarts 开发混搭图表实现步骤,并实现多图联动
  8. 计算机网络连接图标,网络连接图标显示不正常
  9. vue 微信分享功能
  10. 修改Hosts地址让iTunes下载应用快捷如飞