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

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

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

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

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

依賴引入

springboot測試項目中,引入下列依賴以及版本。

<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls</artifactId>
    <version>2.4.5</version>
</dependency>
<dependency>
    <!-- 可以使用poi的實現(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)出模板依舊采取批注的方式,進行定義內(nèi)容范圍、表頭區(qū)域、數(shù)據(jù)區(qū)域。

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

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

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

測試類

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();
        // 動態(tài)頭
        context.putVar("hDatas", Arrays.asList("編號","名稱","年齡","郵箱"));
        // 數(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("專注寫bug測試中文");
            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)出效果

注意事項

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

2、數(shù)據(jù)部分的格式為List<List<Object>>?;蛘?code>List<xxxxPo>,但第2種數(shù)據(jù)格式暫未進行驗證。

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

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

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

總結(jié)

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

相關(guān)文章

  • java 如何給對象中的包裝類設(shè)置默認值

    java 如何給對象中的包裝類設(shè)置默認值

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

    簡單的java讀取文件示例分享

    這篇文章主要介紹了java讀取txt文件內(nèi)容,示例很簡單,代碼里有注釋,大家直接看代碼吧
    2014-01-01
  • springboot驗證碼生成以及驗證功能舉例詳解

    springboot驗證碼生成以及驗證功能舉例詳解

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

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

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

    SpringAOP中的通知Advice解析

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

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

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

    利用maven命令指定配置文件打包springboot項目

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

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

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

    一天時間用Java寫了個飛機大戰(zhàn)游戲,朋友直呼高手

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

    springboot Controller直接返回String類型帶來的亂碼問題及解決

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

最新評論