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(模板导出)的更多相关文章

  1. java实现excel模板导出

    一. 准备工作 1. 点击此下载相关开发工具 2. 将poi-3.8.jxls-core-1.0两个jar包放到工程中,并引用 3. 将excel模板runRecord.xls放到RunRecordB ...

  2. .Net NPOI 根据excel模板导出excel、直接生成excel

    一.根据Excel模板导出excel 1.导入NPOI.dll  2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...

  3. 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的路由方案,与原来的方案在使用上差别不 ...

  4. kettle 使用excel模板导出数据

    通过excel进行高速开发报表: 建设思路: 1.首先制订相关的execl模板. 2.通过etl工具(kettle)能够高速的 将数据库中的数据按excel模板导出成新的excel就可以. 当中ket ...

  5. Magicodes.IE之Excel模板导出教材订购表

    说明 本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出. 要点 本教程使用Magicodes.IE.Excel来完成Excel模板导出 需要通过创建Dto来 ...

  6. Excel模板导出之动态导出

    说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...

  7. c# 导出Excel模板(在项目中有现成的Excel模板)

    在项目中会有导出模板功能,把现成的Excel模板导出去填写之后再进行导入,这里说说怎么导出模板: 模板存放位置: 点击导出模板按钮:  private string currentPath = Pat ...

  8. 导出Excel(导出一个模版)

    有时,客户需要一个标准的模板来填东西,然后在导入 这时可以弄好excel模板,供导出 /** * 导出excel模板文件 * @param request * @param response * @r ...

  9. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  10. java导出Excel定义导出模板

    在很多系统功能中都会有Excel导入导出功能,小编采用JXLS工具,简单.灵活. JXLS是基于 Jakarta POI API 的Excel报表生成工具,它采用标签的方式,类似于jsp页面的EL表达 ...

随机推荐

  1. Intellij IDEA如何使用Maven Tomcat Plugin运行web项目

    首先,Run ——> Edit Configurations,这时候如下图: 然后点击左上角的加号,可以添加一个新的配置,如下图: 选择Maven,如下图: 下面填上自己的配置信息,点击appl ...

  2. appium格式化循环点击

  3. 取MAC地址 (含多网卡),最好的方法,支持Vista,Win7

    取MAC地址 (含多网卡),最好的方法,支持Vista,Win7 unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Cl ...

  4. spark streaming基础知识1

    1.怎么理解spark streaming中的dstream? 它是spark streaming的基础数据结构,代表着(time,RDD)序列,有两种生成方式,一种是基于流数据创建(kafka,so ...

  5. TOSCA自动测试工具跟QTP 和 Selenium的简单对比

    1. 一个课程里的,可以做个简单的参考,有些地方不是很准确

  6. linux下创建用户,给用户设置密码,给用户授权

    1.linux下的用户是属于组的,所以需要创建一个组,划分给用户.创建命令: 在root下执行 groupadd  ver     创建一个组ver 2.创建用户            useradd ...

  7. 【c++ primer, 5e】函数声明 & 分离式编译

    p186~p188: 函数声明1.函数只能定义一次,但是可以声明多次. 2.函数的接口:返回类型 + 函数名 + 形参类型 3.为什么要在头文件中进行函数声明???在源文件中定义?暂时理解到,这么做可 ...

  8. CSS Fonts(字体)

    CSS Fonts(字体) 一.serif和sans-serif字体之间的区别 注意: 在计算机屏幕上,sans-serif字体被认为是比serif字体容易阅读. 二.CSS字型 在CSS中,有两种类 ...

  9. Nginx配置location跳转后偶尔出现404

    tv.xxx.com/voice请求时需跳转至:tv.xxx.com/zongyi/zt2015/haoshengyin/index.shtml 目录结构: nginx服务器配置: location ...

  10. Swift日常开发随笔

    1.修改UISearchBar的搜索框底色 使用以下代码: setSearchFieldBackgroundImage(CommonUseClass._sharedManager.imageFromC ...