实战分享之springboot+easypoi快速业务集成2

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 实战分享之springboot+easypoi快速业务集成2

3.Controller层直接调用

     * 导出Excel   excelVo
     * 注意这里暂时只能用get方法,不能用post
     */
    @GetMapping("/exportExcel")
    @ApiOperation("根据过滤条件导出excel数据")
    public void exportExcel(HttpServletResponse response,
                            @RequestParam(name = "pageNo") int pageNo,
                            @RequestParam("pageSize") int pageSize,
                            @RequestParam(name = "unit",required = false) String unit,
                            @RequestParam(name = "username",required = false) String username,
                            @RequestParam(name = "truename",required = false) String truename,
                            @RequestParam(name = "date",required = false) String date) throws IOException {
            Evorecorddto queryInfo = new Evorecorddto();
            queryInfo.setPageNo(pageNo);
            queryInfo.setPageSize(pageSize);
            if (unit !=null){
                queryInfo.setUnit(unit);
            }
            if (username!=null){
                queryInfo.setUsername(username);
            }
            if (truename!=null){
                queryInfo.setTruename(truename);
            }
            if (date!=null){
                ObjectMapper objectMapper = new ObjectMapper();
                Evorecorddto.DateRange dateRange = objectMapper.readValue(date, Evorecorddto.DateRange.class);
                queryInfo.setDate(dateRange);
            }

        // 查询所有答题用户列表
        List<excelVo> records = evaluationService.excelprint(queryInfo);

        ExcelUtil.exportExcel(records, null, "答题排名", excelVo.class, "答题排名", response);
    }

另外需要修改excel导出颜色的话可以修改官方提供的接口

    4.修改接口

```package com.wzz.utils;

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.params.ExcelForEachParams;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;

/**

  • @author:Kevin
  • @create: 2023-08-24 10:14
  • @Description:
    */

public class ExcelStyleUtil implements IExcelExportStyler {
// 数据行类型
private static final String DATA_STYLES = "dataStyles";
// 标题类型
private static final String TITLE_STYLES = "titleStyles";
//数据行样式
private CellStyle styles;
// 标题样式
private CellStyle titleStyle;

public ExcelStyleUtil(Workbook workbook) {
    this.init(workbook);
}

private void init(Workbook workbook) {
    this.styles = initStyles(workbook);
    this.titleStyle = initTitleStyle(workbook);
}


@Override
public CellStyle getHeaderStyle(short i) {
    return null;
}

@Override
public CellStyle getTitleStyle(short i) {
    return titleStyle;
}

@Override
public CellStyle getStyles(boolean b, ExcelExportEntity excelExportEntity) {
    return styles;
}

@Override
public CellStyle getStyles(Cell cell, int i, ExcelExportEntity excelExportEntity, Object o, Object o1) {
    return getStyles(true,excelExportEntity);
}

@Override
public CellStyle getTemplateStyles(boolean b, ExcelForEachParams excelForEachParams) {
    return null;
}

/**
 * 初始化--标题行样式
 * @param workbook
 * @return
 */
private CellStyle initTitleStyle(Workbook workbook) {
    return buildCellStyle(workbook,TITLE_STYLES);
}

/**
 * 初始化--数据行样式
 * @param workbook
 * @return
 */
private CellStyle initStyles(Workbook workbook) {
    return buildCellStyle(workbook,DATA_STYLES);
}

/**
 * 设置单元格样式
 * @param workbook
 * @param type 类型  用来区分是数据行样式还是标题样式
 * @return
 */
private CellStyle buildCellStyle(Workbook workbook,String type) {
    CellStyle style = workbook.createCellStyle();
    // 字体样式
    Font font = workbook.createFont();
    if(TITLE_STYLES.equals(type)){
        // 背景色
        style.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex());
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        font.setFontHeightInPoints((short)12);
        font.setBold(true);
        font.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());

    }
    if(DATA_STYLES.equals(type)){
        font.setFontHeightInPoints((short)10);
    }
    font.setFontName("Courier New");
    style.setFont(font);
    // 设置底边框
    style.setBorderBottom(BorderStyle.THIN);
    // 设置左边框
    style.setBorderLeft(BorderStyle.THIN);
    // 设置右边框;
    style.setBorderRight(BorderStyle.THIN);
    // 设置顶边框;
    style.setBorderTop(BorderStyle.THIN);
    // 设置底边颜色
    style.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
    // 设置左边框颜色;
    style.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
    // 设置右边框颜色;
    style.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
    // 设置顶边框颜色;
    style.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
    // 设置自动换行;
    style.setWrapText(false);
    // 设置水平对齐的样式为居中对齐;
    style.setAlignment(HorizontalAlignment.CENTER);
    // 设置垂直对齐的样式为居中对齐;
    style.setVerticalAlignment(VerticalAlignment.CENTER);
    return style;
}

}

  5.前端代码
  ```//导出excel
    exportExcel(){
      //https://slgstu.top/api/common/exportExcel
      axios.get("https://slgstu.top/api/common/exportExcel",{
        params: this.queryInfo,
        headers: { 'Content-Type': 'application/json,charset=utf-8'},
        responseType: 'blob', //二进制流
      }).then(res => {
        console.log(res)
        this.$notify({
          title: '提示',
          message: '正在导出,请稍等!'
        });
        // console.log(res);
        // let blob = new Blob([res], { type: 'application/vnd.ms-excel,charset=utf-8' });
        // let url =window.URL.createObjectURL(blob);
        // let link = document.createElement('a');
        // link.download = '答题记录.xlsx';
        // link.href = url;
        // link.click();
        downloadFile(res.data, "答题排名", 'xlsx')
      });
    },
相关文章
|
7天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
32 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
1月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
10天前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
17 1
|
15天前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
63 6
|
25天前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
47 1
|
1月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
221 11
|
2月前
|
缓存 NoSQL Java
Springboot实战——黑马点评之秒杀优化
【9月更文挑战第27天】在黑马点评项目中,秒杀功能的优化对提升系统性能和用户体验至关重要。本文提出了多项Spring Boot项目的秒杀优化策略,包括数据库优化(如索引和分库分表)、缓存优化(如Redis缓存和缓存预热)、并发控制(如乐观锁、悲观锁和分布式锁)以及异步处理(如消息队列和异步任务执行)。这些策略能有效提高秒杀功能的性能和稳定性,为用户提供更佳体验。
128 6
|
21天前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
39 0
|
2月前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
2月前
|
Java Spring
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决
本文介绍了如何在Spring Boot项目中集成Swagger 2.x和3.0版本,并提供了解决Swagger在Spring Boot中启动失败问题“Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerEx”的方法,包括配置yml文件和Spring Boot版本的降级。
springboot 集成 swagger 2.x 和 3.0 以及 Failed to start bean ‘documentationPluginsBootstrapper‘问题的解决