Springboot使用jxls實(shí)現(xiàn)同sheet多個(gè)列表展示
前言
在之前的文章中Springboot——使用jxls實(shí)現(xiàn)excel模板導(dǎo)出excel,具體說(shuō)明了jxls框架的基本使用。
除了最簡(jiǎn)單的單列表展示外,jxls還具有同sheet頁(yè)展示多個(gè)列表的能力,接下來(lái)一起繼續(xù)探究。
制定模板
1、限定模板數(shù)據(jù)的范圍
采取下面的批注,指定需要渲染顯示的報(bào)表范圍。
這里的范圍只考慮第一行的范圍!
命令如下所示:
jx:area(lastCell=”H15”)

2、設(shè)定報(bào)表展示項(xiàng)
報(bào)表一,只顯示單條數(shù)據(jù)。

報(bào)表二,進(jìn)行列表展示,并設(shè)置批注,如下所示:
jx:each(items="dataList2" var="item" lastCell="C8")

報(bào)表三,與報(bào)表二中的批注一樣,只是接收參數(shù)變量名不同。
批注如下所示:
jx:each(items="dataList3" var="item" lastCell="C12")
編寫測(cè)試類
1、將xls模板文件放于 resource 下的 doc文件夾中

2、導(dǎo)入依賴文件
<!-- excel 填充 -->
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>2.8.1</version>
</dependency>3、編寫接口和導(dǎo)出邏輯
@RequestMapping("/ss")
public void download(HttpServletRequest request,HttpServletResponse response) throws Exception {
Map<String, Object> map = new HashMap();
map.put("name1","xiangjiao");
map.put("age1","10");
map.put("are1","中國(guó)");
// 報(bào)表二
List<Map<String, Object>> dataList = new ArrayList();
for (int i = 0; i < 10; i++) {
Map<String, Object> params = new HashMap<>();
params.put("name2","1_"+i);
params.put("age2","xj_"+i);
params.put("are2",22);
dataList.add(params);
}
// ${item.num}
map.put("dataList2",dataList);
// 報(bào)表三
List<Map<String, Object>> dataList3 = new ArrayList();
for (int i = 0; i < 10; i++) {
Map<String, Object> params = new HashMap<>();
params.put("name2","1_"+i);
params.put("age2","xj_"+i);
params.put("are2",22);
dataList3.add(params);
}
// ${item.num}
map.put("dataList3",dataList3);
export(map,"test.xls","666.xls",response);
}
public static void export(Map<String, Object> dataMap, String reportName,String fileName, HttpServletResponse response) throws IOException {
Resource resource = new ClassPathResource("/doc" +File.separator+ reportName);
InputStream in = resource.getInputStream();
// 這里的context是jxls框架上的context內(nèi)容
Context context = PoiTransformer.createInitialContext();
context.toMap().putAll(dataMap);
Workbook workbook = WorkbookFactory.create(in);
// Changing name of the first sheet
workbook.setSheetName(0, "sheet1");
PoiTransformer transformer = PoiTransformer.createTransformer(workbook);
OutputStream out = response.getOutputStream();
transformer.setOutputStream(out);
// 文件名 - 解決中文亂碼問(wèn)題
String filename = URLEncoder.encode(fileName, "UTF-8");
// 設(shè)置響應(yīng)編碼
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
JxlsHelper.getInstance().processTemplate(context, transformer);
in.close();
out.flush();
out.close();
}效果預(yù)覽

結(jié)論
jxls能夠完美的實(shí)現(xiàn)樣式自定義、單數(shù)據(jù)、多報(bào)表集成。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springMVC獲取請(qǐng)求參數(shù)的幾種方式匯總
在日常使用SpringMVC進(jìn)行開(kāi)發(fā)的時(shí)候,有可能遇到前端各種類型的請(qǐng)求參數(shù),這里做一次相對(duì)全面的總結(jié),下面這篇文章主要給大家介紹了關(guān)于springMVC獲取請(qǐng)求參數(shù)的幾種方式,需要的朋友可以參考下2022-04-04
Servlet+JavaBean+JSP打造Java Web注冊(cè)與登錄功能
比作MVC的話,控制器部分采用Servlet來(lái)實(shí)現(xiàn),模型部分采用JavaBean來(lái)實(shí)現(xiàn),而大部分的視圖采用Jsp頁(yè)面來(lái)實(shí)現(xiàn),接下來(lái)我們就來(lái)詳細(xì)看看如何用Servlet+JavaBean+JSP打造Java Web注冊(cè)與登錄功能2016-05-05
SpringMVC框架實(shí)現(xiàn)圖片上傳與下載
這篇文章主要為大家詳細(xì)介紹了SpringMVC框架實(shí)現(xiàn)圖片上傳與下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
java 商戶PC端接入支付寶支付的實(shí)現(xiàn)方法
這篇文章主要介紹了java 商戶PC端接入支付寶支付的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
springboot使用外置tomcat啟動(dòng)方式
這篇文章主要介紹了springboot使用外置tomcat啟動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

