JXLS导出Excel(模板导出)
生活随笔
收集整理的這篇文章主要介紹了
JXLS导出Excel(模板导出)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、導包
在pom.xml中加入依賴如下:
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.4.7</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>1.0.16</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(模板导出)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QLabel 设置背景图片的方法和解决图
- 下一篇: #Html学习积累#分割线中间添加文字