使用easyexcel填充模板数据,并导出excel

文章目录


前言

导出excel功能非常场景,本片文章记录如何使用模板填充数据后再导出。因直接导出excel数据样式不符合要求,所以做了模板填充然后再导出excel。

效果如下:


一、制作模板

注意:列表数据变量名前面要写点{.id},如果单条数据可以不写。

二、前端代码

使用表单提交:

c 复制代码
<% layout('/layouts/default.html', {title: '导出信用用户', libs: ['validate','fileupload']}){ %>
<style type="text/css">
	.delete {
		display: none;
	}
</style>
<div class="main-content">
	<div class="box box-main">
		<div class="box-header with-border">
			<div class="box-tools pull-right">
				<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
			</div>
		</div>
		<#form:form id="inputForm" model="${cshopUser}" action="${ctx}/shop/user/cshopUser/download" method="post" class="form-horizontal">
			<div class="box-body">
				<div class="row">
					<div class="col-xs-12">
						<div class="form-group">
							<label class="control-label col-sm-2"><span class="required">*</span>${text('请选择村庄')}:</label>
							<div class="col-sm-10">
								<#form:treeselect id="office" title="乡镇/村庄选择"
								path="office.officeCode" labelPath="office.officeName"
								url="${ctx}/sys/office/treeData"
								class="required" allowClear="true"/>
							</div>
						</div>
					</div>
				</div>
				<div class="box-footer">
					<div class="row">
						<div class=" text-center">
							<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit">${text('导出用户')}</button>&nbsp;
							<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> ${text('关 闭')}</button>
						</div>
					</div>
				</div>
		</#form:form>
	</div>
</div>
<% } %>
<script>
$("#inputForm").validate({
	submitHandler: function(form){
		js.ajaxSubmitForm($('#inputForm'), {
			url:'${ctx}/shop/user/cshopUser/daochu',
			downloadFile:true
		});
    }
});
</script>

三、后端代码

实体代码:

java 复制代码
@Data
public class BianGengExcel {
    @ExcelProperty(value = "ID")
    private String id;
    @ExcelProperty(value = "姓名")
    private String name;
    @ExcelProperty(value = "手机号")
    private String phone;

}

controller代码:

java 复制代码
    /**
     * 导出用户
     *
     * @param cshopUser
     * @return
     */
    @PostMapping(value = "daochu")
    public String daochu(@Validated CshopUser cshopUser,
                         HttpServletResponse response) {
        List <BianGengExcel> data = cshopUserService.daochu(cshopUser);
        try {
            OutputStream out = response.getOutputStream();
            //文件名需要这样写,不能在setHeader直接写中文名,否则下载的文件名字为空,只有后缀
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            String fileName = URLEncoder.encode("用户-"+System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            String templateFileName = this.getClass().getResource("/static/moban/daochu_moban.xls").getPath();
            ExcelWriter excelWriter = EasyExcelFactory.write(out,BianGengExcel.class).withTemplate(templateFileName).build();
//            ExcelWriter excelWriter = EasyExcel.write(out).withTemplate(templateFileName).build();
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build();
            excelWriter.fill(data,fillConfig,writeSheet);
            excelWriter.finish();
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return renderResult(Global.TRUE, text("导出用户成功!"));
    }

总结

只对jeesite感兴趣可以订阅jeesite专栏。更多实战经验,请关注实战专栏,实战专栏包含了所有jeesite专栏文章。

相关推荐
办公解码器4 分钟前
超链接查看太麻烦,Excel怎么快速提取单元格内的超链接地址?
excel
ZhangBlossom10 分钟前
【Java】EasyExcel实现导入导出数据库中的数据为Excel
java·数据库·excel
S7777777S40 分钟前
easyExcel单元格动态合并示例
java·excel
SunkingYang4 小时前
Excel斜线表头怎么做?合并单元格后添加对角线+两侧输入文字,新手也能秒会!
excel·office·单元格·斜线表头·对角线·输入文字·两边
用户298698530141 天前
C#: 高效移动与删除Excel工作表
后端·.net·excel
缺点内向2 天前
Java: 如何在Excel中添加或删除分页符?
java·excel
不想上班的小吕2 天前
SAP EXCEL模板下载导入
excel·sap
向日葵同志443302 天前
使用@univerjs纯前端渲染excel, 显示图片、链接、样式
前端·react.js·excel
Smile_2542204182 天前
nodered 下载 excel 文件
node.js·excel
办公解码器2 天前
Excel怎么检测录入身份信息的准确性?
excel