SpringBoot集成autopoi实现数据导出到excel表格

首先导入依赖

gradle导入
implementation group: 'org.jeecgframework', name: 'autopoi-web', version: '1.3.6'

maven导入
 		<dependency>
            <groupId>org.jeecgframework</groupId>
            <artifactId>autopoi-web</artifactId>
            <version>1.3.6</version>
        </dependency>

然后在实体类加上注解

	/**
	 **replace是把对应的状态码转为文字,比如在数据库里存的是1,实际上代表的是男,2代表的是女。如果不加就是普通数据
	 name代表在表格里的列名
	**/
	@Excel(name = "性别",replace = {"男_1","女_2"})
	@Column(name="sex" )
	private String sex;//性别 1.男 2女

然后是转换工具类

import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

/**
 * @author qingshi
 * @date 2022/12/29 15:02
 * info:导出excel工具类
 */
public class ExcelUtils {
    /**
     * 导出excel
     *
     * @param title      文件标题
     * @param clazz      实体类型
     * @param exportList 导出数据
     * @param <T>
     * @return
     */
    public static <T> ModelAndView export(String title, Class<T> clazz, List<T> exportList) {
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        mv.addObject(NormalExcelConstants.FILE_NAME, title);
        mv.addObject(NormalExcelConstants.CLASS, clazz);
        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams(title, title));
        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
        return mv;
    }
}

在controller或者servcie使用

	/**
	**这里的就诊卡信息汇总为表格中显示的头部信息
	**/
    @GetMapping("/exportExcel")
    public ModelAndView exportExcel() {
        List<VisitCard> visitCardList = visitCardRepository.findAll();
        return ExcelUtils.export("就诊卡信息汇总", VisitCard.class, visitCardList);
    }

不通过自定义的utils实现
public ModelAndView exportStatus(Integer id, String infoName, String startTime, String userName) {
        List<PromotionReserve> promotionReserveList = promotionMapper.checkStatus(id, null);
        PromotionReserve mergedData = new PromotionReserve();
        mergedData.setReserveTime("操作人: " + userName);
        mergedData.setThirdColumn("导出时间:" + TimeUtils.getTime());
        promotionReserveList.add(mergedData);
        String title = "预约情况导出";
        String secondTitle = "活动名称:" + infoName ;
        ExportParams exportParams = new ExportParams();
        exportParams.setTitle(title);//一级标题
        exportParams.setSecondTitle(secondTitle);//二级标题
        exportParams.setSheetName(title);//表名

        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        mv.addObject(NormalExcelConstants.FILE_NAME, title);//这里的title是导出时的那个文件名
        mv.addObject(NormalExcelConstants.CLASS, PromotionReserve.class);
        mv.addObject(NormalExcelConstants.PARAMS, exportParams);
        mv.addObject(NormalExcelConstants.DATA_LIST, promotionReserveList);
        return mv;
    }

这个是用模板导出的方式,比较灵活一点,适用于对表格有复杂的需求
在这里插入图片描述
首先最上面的是模板,下面的是导出后的表格
这是service层代码

public ModelAndView exportScoreRecord() {
        TemplateExportParams params = new TemplateExportParams("E:\\项目\\文档\\预约情况导出.xls");//这里是模板的本地路径
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", "名称111");//这里对应的是最外层的{{name}}
        map.put("date", 2000000.00);
        map.put("username", "贰佰万");
        map.put("expretime", "执笔潜行科技有限公司");
        List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
        for (int i = 0; i < 4; i++) {
            Map<String, String> lm = new HashMap<String, String>();
            lm.put("mobile", i + 1 + "");//这里对应的是里层的{{t.mobile}}
            lm.put("reserveTime", "A001");
            listMap.add(lm);
        }
        map.put("maplist", listMap);//这里对应{{$fe:maplist t t.reserveTime}}中的fe:maplist,注意最后的}}是在最后一格里面才加
        ModelAndView mv = new ModelAndView(new JeecgTemplateExcelView());
        mv.addObject(TemplateExcelConstants.FILE_NAME, "预约情况导出"); //此处设置的filename无效 ,前端会重更新设置一下
        mv.addObject(TemplateExcelConstants.PARAMS, params);//参数
        mv.addObject(TemplateExcelConstants.MAP_DATA, map);
        return mv;
    }

接下来写一个简单的按钮调用

<button class="layui-icon layui-icon-export" id="downExcel">导出数据</button>

<script src="script/commn/jquery/jquery-2.2.3.min.js"></script>
<script type="text/javascript">
    $(document).on('click',"#downExcel",function(){
        window.location.href="http://localhost:56007/msgservice/index/exportExcel";  
    });
</script>

点击按钮弹出下载
在这里插入图片描述
表格效果如下
在这里插入图片描述
最后附上autopoi官方文档
http://doc.autopoi.jeecg.com/1623954

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想要了解如何使用SpringBoot实现将给定数据导出Excel吗? 首先,您需要在pom.xml中添加以下依赖项: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 这些依赖项将帮助您使用Apache POI库来生成Excel文件。 接下来,您需要创建一个方法,该方法将使用POI库将数据写入Excel文件。以下是一个简单的示例: ```java public void exportDataToExcel(List<YourDataClass> dataList) { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Your sheet name"); // create header row Row header = sheet.createRow(0); header.createCell(0).setCellValue("Header 1"); header.createCell(1).setCellValue("Header 2"); header.createCell(2).setCellValue("Header 3"); // create data rows int rowNumber = 1; for (YourDataClass data : dataList) { Row row = sheet.createRow(rowNumber++); row.createCell(0).setCellValue(data.getField1()); row.createCell(1).setCellValue(data.getField2()); row.createCell(2).setCellValue(data.getField3()); } // write to file try { FileOutputStream outputStream = new FileOutputStream("Your file path"); workbook.write(outputStream); workbook.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 您可以将此方法添加到适当的控制器类中,并将数据列表作为参数传递。接下来,您可以将此方法公开为对外的API,以便其他应用程序也可以调用它。 这就是使用SpringBoot数据导出Excel的基本步骤。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值