欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot使用jxls實(shí)現(xiàn)excel模板導(dǎo)出excel方式

 更新時(shí)間:2024年08月15日 10:32:17   作者:專注寫bug  
這篇文章主要介紹了Springboot使用jxls實(shí)現(xiàn)excel模板導(dǎo)出excel方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

jxls的正確使用,需要使用到下面的表達(dá)式。

# 設(shè)置 列表數(shù)據(jù)展示 
jx:each(items="item.itemsList" var="obj" lastCell="H11" varIndex="ojbIndex")
jx:if(condition="item.productType.equals('財(cái)務(wù)報(bào)表')&&ojbIndex==0" lastCell="H11" areas=["A11:H11"])

# 設(shè)置表title 范圍
jx:area(lastCell=”H12”)

但本次,并未使用到上面的要求,直接進(jìn)行指定xls模板數(shù)據(jù)填充與導(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>

編寫一個導(dǎo)出模板

如下所示:

放在springboot項(xiàng)目中的src\main\resources下的templates_report中,命名為test_user2.xls。

編寫工具類

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Map;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import net.sf.jxls.transformer.XLSTransformer;
 
public class ExcelUtil {

	/**
	 * 下載excel
	 *
	 * @param sourcePath 模板路徑
	 * @param beanParams excel內(nèi)容
	 * @return
	 */
	public static byte[] downLoadExcel(String sourcePath, Map<String, Object> beanParams) throws Exception {
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		//讀取模板
		Resource resource = new ClassPathResource(sourcePath);
		InputStream is = resource.getInputStream();

		XLSTransformer transformer = new XLSTransformer();
		//向模板中寫入內(nèi)容
		Workbook workbook = transformer.transformXLS(is, beanParams);
		//寫入成功后轉(zhuǎn)化為輸出流
		workbook.write(os);

		byte[] bytes = os.toByteArray();
		return bytes;
	}
}

編寫測試類

@GetMapping("/report-xls")
public void excelReport(HttpServletResponse response) throws Exception {
    Map<String, Object> map = new HashMap();
    List<Map<String, Object>> dataList = Lists.newArrayList();
    for (int i = 0; i < 10; i++) {
        Map<String, Object> params = new HashMap<>();
        params.put("num","1_"+i);
        params.put("name","xj_"+i);
        params.put("age",22);
        params.put("mail","專注寫bug測試中文");
        dataList.add(params);
    }
    // ${item.num}
    map.put("item",dataList);

    byte[] bytes = ExcelUtil.downLoadExcel("/templates_report/test_user2.xls", map);

    String fileName = UUID.randomUUID().toString() + "_001_test.xls";
    generateFile(response, bytes, fileName);
}

導(dǎo)出測試

http://localhost/report/report-xls

使用 jx 表達(dá)式填充(2023.08.08)

就如文章開始的一樣,說到了jx的表達(dá)式語法,3種樣式:

# 設(shè)置 列表數(shù)據(jù)展示 
jx:each(items="item.itemsList" var="obj" lastCell="H11" varIndex="ojbIndex")
jx:if(condition="item.productType.equals('財(cái)務(wù)報(bào)表')&&ojbIndex==0" lastCell="H11" areas=["A11:H11"])

# 設(shè)置表title 范圍
jx:area(lastCell=”H12”)

這里分幾種使用情況,做一個大致的說明:

簡單報(bào)表

如下圖所示,需要導(dǎo)出一個簡單的報(bào)表數(shù)據(jù)信息。何為簡單?

就是普通的表格

注意圖中標(biāo)明的兩個方框。其中分別寫了如下的批注。

  • 表格頭部
	Administrator:
	jx:area(lastCell=”P2”)

這里必須設(shè)置范圍,也就是lastCell。表示:表頭最多寬度只到P2。

  • 表格內(nèi)容(列表數(shù)據(jù))
Administrator:
jx:each(items="dataList" var="item" lastCell="P2")

這里也有范圍,設(shè)置的是lastCellP2。

【注意】lastCell 設(shè)置的是橫向最大延伸到P2。

列表多條數(shù)據(jù),只看第一行即可!

復(fù)雜的單行數(shù)據(jù)填充

如下面的excel導(dǎo)出模板。

除了前2行左上部分是集合列表,其他都只需要顯示一條對應(yīng)的數(shù)據(jù)即可!

其實(shí)并不需要用到列表集合,全部是單條數(shù)據(jù)。只是需要顯示很多行而已。

像這樣的數(shù)據(jù),如何實(shí)現(xiàn)呢?

依舊還是使用jx表達(dá)式,限制導(dǎo)出文本的范圍。

如下:

表頭部分:

Administrator:
jx:area(lastCell=”M20”)  

這里的范圍,其實(shí)只需要大于等于需要導(dǎo)出的excel的范圍就行。

如果小了,則只顯示部分?jǐn)?shù)據(jù)。

數(shù)據(jù)部分,jx表達(dá)式如下所示:

Administrator:
jx:each(items="dataList" var="item" lastCell="M20")

這里的lastCell是寫的M20,也就是

從標(biāo)注添加處開始算起,直至 M列的第20行,都算一個集合的一列數(shù)據(jù)!

也就是從A2~M20這個構(gòu)成的長方形,包括的范圍,都只當(dāng)做一個集合中的一個對象。

List<User>中第一個 user 對象

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Log4j定時(shí)打印日志及添加模塊名配置的Java代碼實(shí)例

    Log4j定時(shí)打印日志及添加模塊名配置的Java代碼實(shí)例

    這篇文章主要介紹了Log4j定時(shí)打印日志及添加模塊名配置的Java代碼實(shí)例,Log4j是Apache的一個開源Java日志項(xiàng)目,需要的朋友可以參考下
    2016-01-01
  • SpringBoot使用前綴樹實(shí)現(xiàn)敏感詞過濾示例

    SpringBoot使用前綴樹實(shí)現(xiàn)敏感詞過濾示例

    最近項(xiàng)目用到了敏感詞過濾,本文主要就來介紹一下SpringBoot使用前綴樹實(shí)現(xiàn)敏感詞過濾示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Java基礎(chǔ)教程之基本類型數(shù)據(jù)類型、包裝類及自動拆裝箱

    Java基礎(chǔ)教程之基本類型數(shù)據(jù)類型、包裝類及自動拆裝箱

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之基本類型數(shù)據(jù)類型、包裝類及自動拆裝箱的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Spring中使用JSR303請求約束判空的實(shí)現(xiàn)

    Spring中使用JSR303請求約束判空的實(shí)現(xiàn)

    這篇文章主要介紹了Spring中使用JSR303請求約束判空的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=111

    Caused by: java.io.IOException: DerInputStrea

    這篇文章主要介紹了Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Java對象在JVM中的生命周期詳解

    Java對象在JVM中的生命周期詳解

    這篇文章主要介紹了Java對象在JVM中的生命周期詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • JavaWeb 實(shí)現(xiàn)多個文件壓縮下載功能

    JavaWeb 實(shí)現(xiàn)多個文件壓縮下載功能

    文件下載時(shí),我們可能需要一次下載多個文件,批量下載文件時(shí),需要將多個文件打包為zip,然后再下載。本文給大家分享實(shí)現(xiàn)思路及具體實(shí)現(xiàn)代碼,對javaweb實(shí)現(xiàn)文件壓縮下載功能感興趣的朋友一起學(xué)習(xí)吧
    2017-07-07
  • 學(xué)習(xí)Java內(nèi)存模型JMM心得

    學(xué)習(xí)Java內(nèi)存模型JMM心得

    這篇文章主要介紹了學(xué)習(xí)Java內(nèi)存模型JMM的心得以及對其原理做了深入的介紹,有興趣的朋友學(xué)習(xí)下吧。
    2017-12-12
  • SpringBoot項(xiàng)目啟動執(zhí)行任務(wù)的多種方法小結(jié)

    SpringBoot項(xiàng)目啟動執(zhí)行任務(wù)的多種方法小結(jié)

    這篇文章主要介紹了SpringBoot項(xiàng)目啟動執(zhí)行任務(wù)的多種方法小結(jié),本文給大家分享的這幾種方法經(jīng)常會被用到,當(dāng)我們的項(xiàng)目啟動后需要調(diào)用對應(yīng)的方法,用來項(xiàng)目的初始化等,本文通過示例代碼講解的非常詳細(xì),需要的朋友參考下吧
    2023-07-07
  • Spring Security認(rèn)證提供程序示例詳解

    Spring Security認(rèn)證提供程序示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring Security認(rèn)證提供程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Security具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論