国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

強大!SpringBoot幾行代碼生成word文檔

開發(fā) 前端
Yet Another Report Generator (YARG) 是一款開源 Java 報表庫。它允許創(chuàng)建大多數(shù)常見格式(.doc、.docs、.xls、.xlsx、.html、.ftl、.csv)或自定義文本格式的模板,并填充由 SQL、Groovy 或 JSON 加載的數(shù)據。

環(huán)境:SpringBoot3.2.5

1. 簡介

Yet Another Report Generator (YARG) 是一款開源 Java 報表庫。它允許創(chuàng)建大多數(shù)常見格式(.doc、.docs、.xls、.xlsx、.html、.ftl、.csv)或自定義文本格式的模板,并填充由 SQL、Groovy 或 JSON 加載的數(shù)據。在本篇文章中,我將演示如何使用 Spring @RestController 輸出使用 JSON 加載數(shù)據的 .docx 文檔。

該開源庫的使用非常簡單,主要分為以下幾步:

  • 準備模板

word模板中我們可以通過${xxx}占位符。

  • 加載模板

加載模板對模板進行基本的配置。

  • 準備數(shù)據

根據你的需要你可以準備由JSON,SQL或者Groovy加載的數(shù)據。

  • 定義數(shù)據組

在上一步中準備完數(shù)據后,接下來就是這些數(shù)據應該如何對應到word模板中的占位符。

  • 生成報告

根據上面的準備,最后就是將上面的數(shù)據組織在一起生成報告。

2. 實戰(zhàn)案例

2.1 引入依賴

<dependency>
  <groupId>com.haulmont.yarg</groupId>
  <artifactId>yarg</artifactId>
  <version>2.2.14</version>
</dependency>
<repositories>
  <repository>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
    <id>repo-cuba-platform-work</id>
    <name>repo</name>
    <url>https://repo.cuba-platform.com/content/groups/work</url>
  </repository>
</repositories>

有了上面的依賴無需進行其它的配置,直接可以在代碼中編寫非常少的代碼就能完成word報告的生成。

2.2 設計word模板

圖片圖片

以上的${xxx}是我們將要填充的占位符數(shù)據。注意這里的R在接下來你將看到這里代表什么意思。

2.3 加載模板

我這里將模板放入到classpath/templates中,如下:

圖片圖片

接下來就是加載該day.docx模板,代碼如下:

ReportBuilder reportBuilder = new ReportBuilder();
ReportTemplateBuilder reportTemplateBuilder = new ReportTemplateBuilder()
    .documentPath(new ClassPathResource("templates/day.docx").getURI().getPath())
    .documentName("day.docx")
    .outputType(ReportOutputType.docx)
    .readFileFromPath() ;
reportBuilder.template(reportTemplateBuilder.build()) ;

以上代碼非常的簡單,就是對模板的加載及簡單的配置。

2.4 準備數(shù)據

這里為了演示的簡單,使用的靜態(tài)數(shù)據

Map<String, Object> data = Map.of(
  "date", "2018-12-20", "p1", 234, "p2", 123, 
  "p3", 489, "p4", 789, "p5", 127, "p6", 489) ;
// 將該map數(shù)據生成json字符串形式
String jsonStr = new ObjectMapper().writeValueAsString(data) ;

注意,這里的屬性都是要和word模板占位符對應的。

2.5 定義數(shù)據組

數(shù)據組是個抽象的概念,簡單理解就是在上一步中定義的數(shù)據如何能正確的替換word模板中的占位符。

BandBuilder bandBuilder = new BandBuilder() ;
ReportBand r = bandBuilder.name("R")
    .query("R", "parameter=p$", "json")
    .build() ;
reportBuilder.band(r) ;

這里這里的name("R"),也就是在word模板中使用的R;接著是定義了如何從json中查詢數(shù)據query,parameter=p這里是定義查詢查詢參數(shù)p,而這個p一會在最后生成報表時你將看到這里的p;$表示json-path的根路徑,從根路徑查找每一個屬性值。

2.6 生成報告

Report report = reportBuilder.build() ;
Reporting reporting = new Reporting() ;
reporting.setFormatterFactory(new DefaultFormatterFactory());
reporting.setLoaderFactory(new DefaultLoaderFactory().setJsonDataLoader(new JsonDataLoader()));
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
reporting.runReport(new RunParams(report).param("p", jsonStr), response.getOutputStream());

上面param("p", jsonStr),分別就是上面我們的查詢參數(shù)parameter=p,jsonStr就是我們準備的json數(shù)據。

完成代碼如下:

圖片圖片

以上是生成一個word報告所有流程及全部代碼。接下來進行測試,訪問上面的接口,將下載word文件,最終內容如下:

圖片圖片

成功生成報告。

責任編輯:武曉燕 來源: Spring全家桶實戰(zhàn)案例源碼
相關推薦

2023-10-27 11:38:09

PythonWord

2022-01-07 10:13:07

Tkinter代碼Kivy

2011-06-23 09:13:20

JavaWord

2019-11-06 11:01:57

Python人臉識別代碼

2022-04-15 07:21:12

架構開源模板引擎

2024-07-29 08:30:24

2009-08-18 13:35:08

C#動態(tài)生成Word文

2023-11-01 10:36:19

2020-10-20 09:53:11

代碼IDEA生成器

2021-03-24 15:29:48

Python 開發(fā)編程語言

2020-12-30 10:55:01

代碼Java二維碼

2020-08-10 06:36:21

強化學習代碼深度學習

2024-01-10 14:45:46

Redis數(shù)據庫存儲

2023-12-24 22:52:26

PythonPPT代碼

2023-09-26 10:52:38

LinuxDoxygen

2021-06-22 09:55:05

代碼圖像技術

2021-12-12 18:18:15

代碼元宇宙Python

2024-08-30 11:28:09

2021-08-09 07:26:33

瀑布流布局代碼
點贊
收藏

51CTO技術棧公眾號

六月婷婷久久| 美女主播精品视频一二三四| xxav视频| 88久久精品| 亚洲激情中文1区| ijzzijzzij亚洲大全| 真实原创一区二区影院| 亚洲欧美日韩一区二区三区在线| 五月天最新网址| 国产精品美女一区二区在线观看| 视频一区二区在线| 日韩欧美国产精品综合嫩v| 最新国产成人av网站网址麻豆| 国产爆初菊在线观看免费视频网站| 亚洲欧美激情在线| 国产二区视频在线| 久久狠狠婷婷| 成人免费看吃奶视频网站| 哺乳挤奶一区二区三区免费看 | 五月天网站亚洲| 成人片在线播放| 亚洲成av人片在线观看| 日韩日韩日韩日韩| 天堂在线亚洲视频| 国精产品一区一区三区有限在线| 亚洲成人av高清| 午夜视频一区在线观看| 亚洲女人天堂在线| 一本一道久久a久久精品| 日本中文字幕在线视频| 精品动漫一区二区三区在线观看| av中文字幕在线看| 亚洲国产高清aⅴ视频| 国产精品国产三级国产专区53 | 超碰成人福利| 久久最新资源网| 日本精品在线播放| 中文字幕在线观看一区| 这里只有精品视频| 国产美女永久无遮挡| 中文在线网在线中文| 国内精品福利| 亚洲福中文字幕伊人影院| 欧美高清视频一区二区| 免费成人高清在线视频| 亚洲色在线视频| 97品白浆高清久久久久久| 精品国产伦一区二区三区观看方式 | 一区二区三区视频在线看| 日本福利在线| 亚洲va国产天堂va久久en| 同心难改在线观看| 日韩一区二区三区在线播放| 欧美香蕉视频| www.av一区视频| 日韩和欧美的一区| 中文字幕第21页| 日韩av在线资源| 亚洲激情黄色| 女人另类性混交zo| 欧美喷潮久久久xxxxx| 在线看成人短视频| 久久精品xxx| 亚洲成av人片在线观看香蕉| 国产在视频线精品视频www666| 日韩精品一区二区三区色偷偷| 五月婷婷激情综合| 超碰个人在线| 亚洲欧美在线一区| 一区二区日韩欧美| 18岁网站在线观看| 欧美刺激脚交jootjob| 精品国产第一福利网站| yy111111少妇影院日韩夜片| 99久久精品99国产精品| av免费在线观看网站| 国产不卡一区二区三区在线观看| 亚洲午夜精品久久久久久久久| 日韩最新av| 亚洲 自拍 另类小说综合图区| 欧美精品自拍偷拍| 欧美高清视频在线观看mv| 成年人在线观看视频免费| 日韩一二三区视频| 黑人一区二区| 免费不卡av| 国产一区二区三区播放| 一本一道综合狠狠老| 好看不卡的中文字幕| av在线免费一区| http;//www.99re视频| 国产性色一区二区| 天堂av一区| 日韩av片网站| 欧美日韩国产91| 一区二区三区波多野结衣在线观看| 凹凸成人精品亚洲精品密奴| 欧美黄色性生活| 国产精品久久久999| 国产欧美综合在线观看第十页| 69av成人| 又黄又爽毛片免费观看| 欧美激情视频网站| 国产成人一区在线| 97久久中文字幕| 啊啊啊射了视频网站| 国产精品高清在线| 先锋资源久久| a级大胆欧美人体大胆666| 国产wwww| 黄色91av| 欧美人牲a欧美精品| 午夜精品久久99蜜桃的功能介绍| 在线成人av观看| 中文在线а√天堂官网| 久久手机视频| 欧美精品一区二区在线播放| 香蕉久久夜色精品| 精品少妇3p| 无遮挡爽大片在线观看视频 | 成人手机在线| 亚洲a级在线观看| 天天综合网天天综合色| 韩国成人福利片在线播放| 爱啪啪综合导航| 久久国产色av免费观看| 69av在线播放| 伊人亚洲福利一区二区三区| 日韩精品一区二区三区中文不卡| 日韩成人一级大片| 国产电影一区二区在线观看| yjizz视频网站在线播放| 亚洲 欧美 日韩 国产综合 在线| 四虎永久国产精品| 成人女保姆的销魂服务| 国产成人综合一区二区三区| 亚洲丝袜av一区| 91麻豆精品久久久久蜜臀 | 在线观看欧美一区| 欧美黑人狂野猛交老妇| 欧美午夜精品久久久久久浪潮| 国产+成+人+亚洲欧洲自线| 久久精品网址| av成人综合| 噜噜噜天天躁狠狠躁夜夜精品| 狂野欧美xxxx韩国少妇| 成人短视频在线| 成人高清网站| 国产高清视频色在线www| 日韩欧美精品一区二区三区| 1769在线观看| 北条麻妃在线| 国产在线自天天| 牛牛电影国产一区二区| 日韩脚交footjobhdboots| 精品国产白色丝袜高跟鞋| 秋霞在线观看av| 欧美精品一区二区三区涩爱蜜| 精品久久一区二区三区蜜桃| 色与欲影视天天看综合网| 国产成人精品久久二区二区| 97视频免费观看| 最近2019年日本中文免费字幕| 日韩欧美黄色影院| 欧美性生交大片免费| 亚洲精品福利资源站| 亚洲а∨天堂久久精品喷水| 激情久久av一区av二区av三区| 欧美日韩国产天堂| 精品久久人人做人人爽| 亚洲精品一区av在线播放| 欧美美女激情18p| 欧美刺激性大交免费视频| 91嫩草免费看| 日本中文字幕一级片| 欧美日韩视频免费| 亚洲日本高清| 97精品国产99久久久久久免费| 色婷婷一区二区三区| 99成人精品| 成人免费的视频| 天天av天天翘天天综合网| 中文字幕亚洲图片| 国产精品综合不卡av| 92看片淫黄大片一级| 黄色视屏免费在线观看| 亚洲精华液一区二区三区| 97青娱国产盛宴精品视频| 99精品国产福利在线观看免费| 国产成人免费视频精品含羞草妖精| 国产人妖乱国产精品人妖| 亚洲图片欧美激情| 日韩精品视频在线免费观看 | 蜜桃视频一区二区在线观看| 毛片在线视频观看| 美女网站在线观看| 亚洲区小说区图片区qvod按摩| 成人综合激情网| 欧美精品手机在线| 中文字幕中文字幕在线中心一区|