Spring Boot Excel文件导出下载实现代码文件导出下载实现代码
带领我们直接实现Excel文件的直接导出下载,后续开发不需要开发很多代码,直接继承已经写好的代码,增加
一个Xml配置就可以直接导出。具体实现代码大家跟随小编一起通过本文学习吧
Spring Boot Excel 文件导出文件导出
目标:目标:
实现Excel文件的直接导出下载,后续开发不需要开发很多代码,直接继承已经写好的代码,增加一个Xml配置就可以直接导
出。
实现:实现:
1、抽象类 BaseExcelView 继承 webmvc 的 AbstractXlsxStreamingView 抽象类, AbstractXlsxStreamingView 是webmvc继
承了最顶层View接口,是可以直接大量数据导出的不会造成内存泄漏问题,即 SXSSFWorkbook 解决了内存问题, 导出只支
持xlsx类型文件。
抽象类代码 BaseExcelView :
public abstract class BaseExcelView extends AbstractXlsxStreamingView {
private static final Logger logger = LoggerFactory.getLogger(BaseExcelView.class);
/**
* 获取导出文件名
*
* @return
*/
abstract protected String getFileName();
/**
* 获取表单名称
*
* @return
*/
abstract protected String getSheetName();
/**
* 获取标题栏名称
*
* @return
*/
abstract protected String[] getTitles();
/**
* 获取列宽
*
* @return
*/
abstract protected short[] getColumnWidths();
/**
* 构造内容单元格
*
* @param sheet
*/
abstract protected void buildContentCells(Sheet sheet);
@Override
protected void buildExcelDocument(
Map<String, Object> model, Workbook workbook, HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 构造标题单元格 SXSSFWorkbook
Sheet sheet = buildTitleCells(workbook);
// 构造内容单元格
buildContentCells(sheet);
// 设置响应头
setResponseHead(request, response);
}
/**
* 设置响应头
*
* @param response
* @throws IOException
*/
protected void setResponseHead(HttpServletRequest request,
HttpServletResponse response) throws IOException {
// 文件名
String fileName = getFileName();
String userAgent = request.getHeader("user-agent").toLowerCase();
logger.info("客户端请求头内容:");
logger.info("user-agent 值: {}", userAgent);
if (userAgent != null) {
评论0