JXLS导出Excel(模板导出)
1、导包
在pom.xml中加入依赖如下:
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.4.</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>1.0.</version>
</dependency>
2、创建导出Excel的模板,实例如下:图1中的表达式(jx:each(items="object",var="order",lastCell="E4")),此处的object要与JxlsExporter.java中返回的集合的“键”保持一,下面给出可处理父子级关系的批注展示,类似于jstl中的each

图1 父级数据

图2 子级数据

图3 头部批注
说明:通过批注的形式,指定“作用域”范围,上图中lastCell表示在该坐标内输入表达式有效。
3、获取列表数据,并导出Excel,JxlsExporter.java 代码如下
package com.inmansoft.base.util; //template模板路径 import com.inmansoft.base.model.plan.LsBaseOrder;
import com.inmansoft.base.model.plan.LsDeptOrder;
import lombok.extern.slf4j.Slf4j;
import org.jxls.common.Context;
import org.jxls.transform.poi.PoiContext;
import org.jxls.util.JxlsHelper; import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random; /**
* <p>title:</p>
* <p>description:</p>
*
* @author: zsj
* @date Created in 2019-01-06
* @modified By zsj
*/
@Slf4j
public class JxlsExporter {
private static String template = "leadshow.xls";
private static String output = "target/export_leadshow.xls"; public static void main(String[] args) throws IOException {
log.info("导出数据");
execute();
} public static void execute() throws IOException {
List<LsBaseOrder> lsBaseOrders = createLsBaseOrders(6);
log.info("Opening input stream");
//template 为模板路径:eg:leadshow.xls,
// JxlsExporter.class.getResourceAsStream(template)—> leadshow.xls模板路径需放置在该类包路径下
try (InputStream is = JxlsExporter.class.getResourceAsStream(template)) {
//output 为导出的Excel路径,有一个坑需要注意的是,在springboot项目打包成jar包之后,
//导出文件路径可这样表示: System.getProperty("user.dir") + "/export_leadshow.xls",这种"static/export_leadshow.xls"路径会失效
try (OutputStream os = new FileOutputStream(output)) {
Context context = new PoiContext();
context.putVar("object", lsBaseOrders);
JxlsHelper.getInstance().processTemplate(is, os, context);
}
}
} public static List<LsBaseOrder> createLsBaseOrders(int num) {
List<LsBaseOrder> lsBaseOrders = new ArrayList<>();
Random random = new Random();
for (int i = 1; i <= num; i++) {
LsBaseOrder item = new LsBaseOrder();
item.setItemName("2835 LED硬灯条" + i);
item.setItemSpec("60珠 8500K");
item.setSimpleCode("简码-" + i);
item.setCompanyName("华为公司"); List<LsDeptOrder> lsDeptOrders = new ArrayList<>();
item.setChildren(lsDeptOrders);
for (int j = 1; j <= random.nextInt(10); j++) {
LsDeptOrder deptOrder1 = new LsDeptOrder();
deptOrder1.setItemName("变压器" + j);
deptOrder1.setFullNum(12);
lsDeptOrders.add(deptOrder1);
}
lsBaseOrders.add(item);
}
return lsBaseOrders;
}
}
模板路径如下:(与上面Java类包路径一致)

JXLS导出Excel(模板导出)的更多相关文章
- java实现excel模板导出
一. 准备工作 1. 点击此下载相关开发工具 2. 将poi-3.8.jxls-core-1.0两个jar包放到工程中,并引用 3. 将excel模板runRecord.xls放到RunRecordB ...
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- kettle 使用excel模板导出数据
通过excel进行高速开发报表: 建设思路: 1.首先制订相关的execl模板. 2.通过etl工具(kettle)能够高速的 将数据库中的数据按excel模板导出成新的excel就可以. 当中ket ...
- Magicodes.IE之Excel模板导出教材订购表
说明 本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出. 要点 本教程使用Magicodes.IE.Excel来完成Excel模板导出 需要通过创建Dto来 ...
- Excel模板导出之动态导出
说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...
- c# 导出Excel模板(在项目中有现成的Excel模板)
在项目中会有导出模板功能,把现成的Excel模板导出去填写之后再进行导入,这里说说怎么导出模板: 模板存放位置: 点击导出模板按钮: private string currentPath = Pat ...
- 导出Excel(导出一个模版)
有时,客户需要一个标准的模板来填东西,然后在导入 这时可以弄好excel模板,供导出 /** * 导出excel模板文件 * @param request * @param response * @r ...
- 使用Apache POI导出Excel小结--导出XLS格式文档
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
- java导出Excel定义导出模板
在很多系统功能中都会有Excel导入导出功能,小编采用JXLS工具,简单.灵活. JXLS是基于 Jakarta POI API 的Excel报表生成工具,它采用标签的方式,类似于jsp页面的EL表达 ...
随机推荐
- Linux系统——源码编译安装
记得要先去把httpd-2.2.9.tar.gz通过xftp进行文件传输第一步:yum仓库下安装编译环境的支持程序 #yum -y install gcc gcc-c++ make 第二步:将源码包h ...
- SVN无法Cleanup
错误如下: 原因:svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了 解决方法:清空svn的队列 1.下载Sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc ...
- XDU 1109
#include<stdio.h> #define N 10007 #define maxn 1000005 int dp[maxn]; int main() { dp[]=,dp[]=, ...
- 从两道题看go channel的用法
在知乎看到有人分享了几道笔试题,自己总结了一下其中与channel有关的题目.全部题目在这里: https://zhuanlan.zhihu.com/p/35058068 题目 5.请找出下面代码的问 ...
- spoj1812 LCS2 - Longest Common Substring II
地址:http://www.spoj.com/problems/LCS2/ 题面: LCS2 - Longest Common Substring II no tags A string is fi ...
- Java中的JDBC是什么?
JDBC(Java Data Base Connectivity, Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它有一组用Java语言编写的类和接 ...
- 2 安装企业wiki:confluence
jira sudo /etc/init.d/jira start 启动 jiarsudo /etc/init.d/jira stop 停止 jiar 方法一:$ sudo /etc/init.d/co ...
- React组件绑定this的四种方式
题图 By HymChu From lnstagram 用react进行开发组件时,我们需要关注一下组件内部方法this的指向,react定义组件的方式有两种,一种为函数组件,一种为类组件,类组件内部 ...
- 【Thinking in Java, 4e】控制流程执行
p46~p75: [迭代] 1.Java不允许将数字作为布尔值用. 1.有点意思的小程序WhileTest. public class WhileTest { static boolean condi ...
- Python3.x:selenium获取iframe内嵌页面的源码
Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...