亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

jxls2.4.5如何動(dòng)態(tài)導(dǎo)出excel表頭與數(shù)據(jù)

 更新時(shí)間:2024年08月15日 10:04:30   作者:專(zhuān)注寫(xiě)bug  
這篇文章主要介紹了jxls2.4.5如何動(dòng)態(tài)導(dǎo)出excel表頭與數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在之前的文章中,介紹了jxls的基礎(chǔ)使用。但導(dǎo)出表頭屬于寫(xiě)死的,并未采取動(dòng)態(tài)渲染。

本次進(jìn)行動(dòng)態(tài)渲染操作,動(dòng)態(tài)渲染表頭和填充數(shù)據(jù)。

依賴(lài)引入

springboot測(cè)試項(xiàng)目中,引入下列依賴(lài)以及版本。

<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls</artifactId>
    <version>2.4.5</version>
</dependency>
<dependency>
    <!-- 可以使用poi的實(shí)現(xiàn)也可以用jexcelapi的 -->
    <groupId>org.jxls</groupId>
    <artifactId>jxls-poi</artifactId>
    <version>1.0.15</version>
</dependency>
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-jexcel</artifactId>
    <version>1.0.7</version>
</dependency>
<dependency>
    <groupId>net.sf.jxls</groupId>
    <artifactId>jxls-core</artifactId>
    <version>1.0.6</version>
</dependency>

制作導(dǎo)出模板

導(dǎo)出模板依舊采取批注的方式,進(jìn)行定義內(nèi)容范圍、表頭區(qū)域、數(shù)據(jù)區(qū)域。

  • A1中的批注如下:
jx:area(lastCell=”A3”)

指定一條數(shù)據(jù)填充時(shí)的范圍。

  • A2中的批注如下:
jx:grid(lastCell=“A3” headers=“hDatas” data=“bDatas” areas=[A2:A2, A3:A3] formatCells=“BigDecimal:C1,Date:D1”)
  • headers指定哪個(gè)list集合屬于動(dòng)態(tài)表頭數(shù)據(jù)。
  • data 指定使用哪個(gè)數(shù)據(jù)集合作為數(shù)據(jù)渲染源。
  • areas 指定表頭和數(shù)據(jù)的范圍。A2:A2 表示 表頭數(shù)據(jù)的區(qū)域。A3:A3 表示 第一個(gè)數(shù)據(jù)單元格所在的區(qū)域。
  • formatCells 官方文檔說(shuō)的是指定數(shù)據(jù)格式,測(cè)試時(shí)不屬于必填項(xiàng)。

測(cè)試類(lèi)

package cn.xj.controller;

import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.*;
import java.util.*;

@Slf4j
public class Test3 {

    public static void main(String[] args) throws Exception {

        //Map<String, Object> map = new HashMap();
        Context context = new Context();
        // 動(dòng)態(tài)頭
        context.putVar("hDatas", Arrays.asList("編號(hào)","名稱(chēng)","年齡","郵箱"));
        // 數(shù)據(jù)集合
        List<List<Object>> dataList = Lists.newArrayList();
        for (int i = 0; i < 10; i++) {
            List<Object> list = new ArrayList<>();
            Map<String, Object> params = new HashMap<>();
            list.add("1_"+i);
            list.add("xj_"+i);
            list.add(22);
            list.add("專(zhuān)注寫(xiě)bug測(cè)試中文");
            dataList.add(list);
        }
        // ${item.num}
        context.putVar("bDatas",dataList);

        Resource resource = new ClassPathResource("/report/test_user2.xlsx");
        InputStream is = resource.getInputStream();

        String outFile = System.getProperty("user.dir")+ File.separator+"springboot-poi"+File.separator+"pdf"+File.separator+System.currentTimeMillis()+ ".xlsx";
        OutputStream outputStream = new FileOutputStream(outFile);


        JxlsHelper.getInstance().processTemplate(is, outputStream, context);

    }

}

導(dǎo)出效果

注意事項(xiàng)

1、表頭的數(shù)據(jù)格式為List<String>。

2、數(shù)據(jù)部分的格式為List<List<Object>>。或者List<xxxxPo>,但第2種數(shù)據(jù)格式暫未進(jìn)行驗(yàn)證。

3、使用動(dòng)態(tài)表頭方式,必須使用org.jxls.common.Context來(lái)承接數(shù)據(jù)信息。

Context context = new Context();
// 動(dòng)態(tài)頭
context.putVar(“hDatas”, Arrays.asList(“編號(hào)”,“名稱(chēng)”,“年齡”,“郵箱”));
// 數(shù)據(jù)集合
List<List> dataList = Lists.newArrayList();
context.putVar(“bDatas”,dataList);

4、表頭與數(shù)據(jù)單元格部分,必須強(qiáng)制使用${header}${cell}。自定義命名會(huì)導(dǎo)致數(shù)據(jù)不會(huì)填充!

總結(jié)

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

相關(guān)文章

  • java 如何給對(duì)象中的包裝類(lèi)設(shè)置默認(rèn)值

    java 如何給對(duì)象中的包裝類(lèi)設(shè)置默認(rèn)值

    這篇文章主要介紹了java 如何給對(duì)象中的包裝類(lèi)設(shè)置默認(rèn)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 簡(jiǎn)單的java讀取文件示例分享

    簡(jiǎn)單的java讀取文件示例分享

    這篇文章主要介紹了java讀取txt文件內(nèi)容,示例很簡(jiǎn)單,代碼里有注釋?zhuān)蠹抑苯涌创a吧
    2014-01-01
  • springboot驗(yàn)證碼生成以及驗(yàn)證功能舉例詳解

    springboot驗(yàn)證碼生成以及驗(yàn)證功能舉例詳解

    登錄注冊(cè)是大部分系統(tǒng)需要實(shí)現(xiàn)的基本功能,同時(shí)也會(huì)對(duì)登錄驗(yàn)證增加需求,下面這篇文章主要給大家介紹了關(guān)于springboot驗(yàn)證碼生成以及驗(yàn)證功能的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • java中的快捷鍵小結(jié)

    java中的快捷鍵小結(jié)

    以下是myeclipse中的所有快捷鍵列表
    2013-03-03
  • SpringAOP中的通知Advice解析

    SpringAOP中的通知Advice解析

    這篇文章主要介紹了SpringAOP中的通知Advice解析,AOP 中的通知是基于連接點(diǎn)業(yè)務(wù)邏輯的一種增強(qiáng),Spring AOP 可以基于 XML 方式和基于注解方式定義,只是寫(xiě)法不同,這里只使用注解的方式來(lái)講解通知的詳細(xì)用法,需要的朋友可以參考下
    2023-09-09
  • springboot后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫(kù)的便捷方法

    springboot后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫(kù)的便捷方法

    實(shí)現(xiàn)springboot 后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫(kù),只需要新建 Mapper、實(shí)體類(lèi) 相應(yīng)的文件夾,將不同數(shù)據(jù)源的文件保存到對(duì)應(yīng)的文件夾下,添加綁定數(shù)據(jù)庫(kù)配置Config,就可以輕松完成
    2021-08-08
  • 利用maven命令指定配置文件打包springboot項(xiàng)目

    利用maven命令指定配置文件打包springboot項(xiàng)目

    這篇文章主要介紹了利用maven命令指定配置文件打包springboot項(xiàng)目,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • SpringBoot YAML語(yǔ)法基礎(chǔ)詳細(xì)整理

    SpringBoot YAML語(yǔ)法基礎(chǔ)詳細(xì)整理

    YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標(biāo)記語(yǔ)言)的遞歸縮寫(xiě)。在開(kāi)發(fā)的這種語(yǔ)言時(shí),YAML 的意思其實(shí)是:“Yet Another Markup Language”(仍是一種標(biāo)記語(yǔ)言),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 一天時(shí)間用Java寫(xiě)了個(gè)飛機(jī)大戰(zhàn)游戲,朋友直呼高手

    一天時(shí)間用Java寫(xiě)了個(gè)飛機(jī)大戰(zhàn)游戲,朋友直呼高手

    前兩天我發(fā)現(xiàn)論壇有兩篇飛機(jī)大戰(zhàn)的文章異?;鸨?但都是python寫(xiě)的,竟然不是我大Java,說(shuō)實(shí)話作為老java選手,我心里是有那么一些失落的,今天特地整理了這篇文章,需要的朋友可以參考下
    2021-05-05
  • springboot Controller直接返回String類(lèi)型帶來(lái)的亂碼問(wèn)題及解決

    springboot Controller直接返回String類(lèi)型帶來(lái)的亂碼問(wèn)題及解決

    文章介紹了在Spring Boot中,當(dāng)Controller直接返回String類(lèi)型時(shí)可能出現(xiàn)的亂碼問(wèn)題,并提供了解決辦法,通過(guò)在`application.yaml`中設(shè)置請(qǐng)求和響應(yīng)的編碼格式,并在自定義配置類(lèi)中進(jìn)行配置,可以有效解決這一問(wèn)題
    2024-11-11

最新評(píng)論