博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot整合poi-tl实现导出多张数据表结构和word文本
阅读量:4142 次
发布时间:2019-05-25

本文共 1111 字,大约阅读时间需要 3 分钟。

我太难了

作为一个伟大又渺小的猿,竟然被这个问题困扰了接近三天,我太难了。

  导出word生成文本数据、生成一张表都是soeasy,今天我这里记录的是生成文本和多张表。
  废话不多说,先看看效果图:
  在这里插入图片描述

这里使用的技术是SpringBoot + poi-tl ,poi-tl(poi template language)是基于Apache POI的Word模板引擎,纯Java组件,跨平台,代码短小精悍,通过插件机制使其具有高度扩展性。

  实现这个操作运用了poi-tl的表格模板文档模板。详情请看:
  核心思想:文档模板就相当于一张纸,表格模板就相当于一个表格,我们在纸上画多个表格、写多个文字,文档模板将表格模板包裹住,相当于外包装。
 导出之前,我们先创建两个word模板,这两个模板一定要区分清楚:
 1.表格模板
 {图片}
::::标准名称是文本信息,{
{#table}},这里的表达式类似于一个定位符,告诉程序我们要在这里开始画表,对应的java代码看后面
 2.文档模板
 {图片}
::::其他都是描述性文本,{
{+standardInfo}}是生成多张表的关键。作用于{
{#table}}类似
上代码:

controller这些我就不写了,关键看看ServiceImpl中的逻辑

{图片}
说明: RowRenderData.build()是一个构建函数,帮助我们构建表的结构,包括表头header,style,行数据等等。一个RowRenderData相当于一行数据,这里我将数据转换成一个List<RowRenderData>的集合,一个集合就相当于一张表格的数据,最后放在map中。
注意: map.put(“standardName”,standard.getName()); key:standardName一定要和表格模板上的名称{
{standardName}}一致,
同样: map.put(“table”,new MiniTableRenderData(header,listOne)); table要个表格模板中的{
{#table}}一致
{图片}

说明: 传过来的数据dataList是用于填充表格模板的,新建的map集合是用来填充文档模板的,最后将表格封装好的DocxRenderData对象加入map,map.put(“standardInfo”, standardInfo);注意:这里的key:standardInfo一定要和文档模板中的:{

{+standardInfo}}名称一致
{图片}
最后收尾工作,输出到浏览器实现,访问我们controller层写的接口,就能实现下载一个word文档。

转载地址:http://sukti.baihongyu.com/

你可能感兴趣的文章
计算 sigmoid 函数的导数
查看>>
keras使用总结
查看>>
过拟合曲线与早期停止法
查看>>
ndarray维度认识及np.concatenate函数详解
查看>>
keras扁平化 激活函数 避免过拟合技巧
查看>>
keras回调监控函数
查看>>
取整函数(ceil、floor、round)
查看>>
机器学习工程师 - Udacity 卷积层的维度计算
查看>>
敏感性和特异性
查看>>
接受者操作特征曲线ROC
查看>>
参考文献的引用的格式
查看>>
pytorch 报错No module named torch
查看>>
对Tensor进行变换 class torchvision.transforms.Normalize(mean, std) 给定均值:(R,G,B) 方差:(R,G,B),将会把Tensor正则化
查看>>
RuntimeError: output with shape [1, 28, 28] doesnt match the broadcast shape [3, 28, 28]
查看>>
pytorch 实现MNIST大概方法草算,注意数据结构类型
查看>>
torch helper文件
查看>>
pytorch.sum() 中的dim 及pytorch官方手册
查看>>
logsoftmax(dim=1)是对批量样本中的每个样本取概率,而不是针对每个特征
查看>>
pytorch 中 logsoftmax 与 softmax的区别
查看>>
log_softmax与softmax区别
查看>>