Java導出word

原文地址

傳入的值不能為null,否則會報錯,IXDocReport 有自己的判null規則,比較麻煩,建議代碼直接把null替換成""

   public void exportWord1(WeeklyMeetDataDto dto, HttpServletResponse response) {ServletOutputStream downLoadOutput = null;try {WeeklyMeetDataVo.TextData partOneData = getPartOneData(dto);String text = dto.getRqb().split("-")[1] + "月" + dto.getRqb().split("-")[2] + "日~" + dto.getRq().split("-")[1] + "月" + dto.getRq().split("-")[2] + "日," +"全國日均發電量" + partOneData.getQkjfsdl() + "億千瓦時,同比" + partOneData.getQkjfsdltb() + ";" +"國網經營區日均調度用電量" + partOneData.getDdfsdl_new() + "億千瓦時,同比" + partOneData.getDdfsdl_newtb() + ";";ClassPathResource classPathResource = new ClassPathResource("template/DDZB1.docx");InputStream ins = classPathResource.getInputStream();//注冊xdocreport實例并加載FreeMarker模板引擎IXDocReport report = XDocReportRegistry.getRegistry().loadReport(ins, TemplateEngineKind.Freemarker);//創建xdocreport上下文對象IContext context = report.createContext();//創建要替換的文本變量context.put("text", text);List<WeeklyMeetDataVo.EachRegion> eachRegion = getEachRegion(dto);List<WeeklyMeetDataVo.PullPower> pullPower = getPullPower(dto);List<WeeklyMeetDataVo.DirectPowerPlant> directPowerPlant = getDirectPowerPlant(dto);String lxdText = "";if (CollectionUtils.isEmpty(pullPower)) {lxdText = "所有電網均未發生拉路限電現象。";}context.put("lxdText", lxdText);context.put("ddydlqk", eachRegion);context.put("zdfhqk", eachRegion);context.put("lxd", pullPower);context.put("zd", directPowerPlant);//表格FieldsMetadata fieldsMetadata = report.createFieldsMetadata();fieldsMetadata.load("ddydlqk", WeeklyMeetDataVo.EachRegion.class, true);fieldsMetadata.load("zdfhqk", WeeklyMeetDataVo.EachRegion.class, true);fieldsMetadata.load("lxd", WeeklyMeetDataVo.PullPower.class, true);fieldsMetadata.load("zd", WeeklyMeetDataVo.DirectPowerPlant.class, true);//為null會報錯Map<String, Object> contextMap = context.getContextMap();for (Map.Entry<String, Object> map : contextMap.entrySet()) {Class<?> aClass = map.getValue().getClass();String name = aClass.getName();if ("java.util.ArrayList".equals(name)) {Object value = map.getValue();List list = (List) value;for (Object object : list) {Class<?> aClass2 = object.getClass();Field[] declaredFields = aClass2.getDeclaredFields();for (Field field1 : declaredFields) {field1.setAccessible(true);Object o = field1.get(object);if (o == null) {field1.set(object, "");}}}} else if (ObjectUtils.isEmpty(map.getValue())) {contextMap.put(map.getKey(), "");}}//替換圖片fieldsMetadata.addFieldAsImage("img");byte[] byteImage = ImageUtils.base64ToFile(dto.getImageBase64Code1());ByteArrayInputStream inputStream = new ByteArrayInputStream(byteImage);context.put("img", inputStream);response.setContentType("application/msword");response.setCharacterEncoding("utf-8");response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("調度周報.docx", "utf-8"));response.setHeader("Content-Type", "application/octet-stream;charset=utf-8");downLoadOutput = response.getOutputStream();report.process(context, downLoadOutput);} catch (Exception e) {e.printStackTrace();} finally {try {if (downLoadOutput != null) {downLoadOutput.flush();downLoadOutput.close();downLoadOutput = null;}} catch (IOException e1) {e1.printStackTrace();System.out.println("Close ServletOutputStream error. type 55");}}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209320.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ignis - Interactive Fire System

Ignis - 點火、蔓延、熄滅、定制! 全方位火焰系統。 這個插件在21年的項目中使用過很好用值使用概述 想玩火嗎?如果想的話,那么Ignis就是你的最佳工具。有了Ignis,你可以把任何物體、植被或帶皮帶骨的網狀物轉換為可燃物體,它就會自動著火。然后,火焰可以蔓延,點燃其他物…

Java 一對多

前言 Internet 協議集支持一個無連接的傳輸協議&#xff0c;該協議稱為用戶數據報協議&#xff08;UDP&#xff0c;User Datagram Protocol&#xff09;。UDP 為應用程序提供了一種無需建立連接就可以發送封裝的 IP 數據包的方法。 此代碼就是基于UDP協議編寫。 通常把一對多的…

【docker 】centOS 安裝docker

官網 docker官網 github源碼 卸載舊版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 安裝軟件包 yum install -y yum-utils \device-mapper-persistent-data…

【優選算法系列】【專題二滑動窗口】第四節.30. 串聯所有單詞的子串和76. 最小覆蓋子串

文章目錄 前言一、串聯所有單詞的子串 1.1 題目描述 1.2 題目解析 1.2.1 算法原理 1.2.2 代碼編寫 1.2.3 題目總結二、最小覆蓋子串 2.1 題目描述 2.2 題目解析 2.2.1 算法原理 2.2.2 代碼編寫 …

【Docker】進階之路:(四)操作容器

【Docker】進階之路&#xff1a;&#xff08;四&#xff09;Docker容器 容器的生命周期創建容器docker createdocker run 管理容器查看運行的容器&#xff1a;查看所有容器&#xff1a; 啟動與終止啟動容器終止容器 進入容器docker attachdocker exec 導出和導入導出導入 容器的…

淺談5G基站節能及數字化管理解決方案的設計與應用-安科瑞 蔣靜

截至2023年10月&#xff0c;我國5G基站總數達321.5萬個&#xff0c;占全國通信基站總數的28.1%。然而&#xff0c;隨著5G基站數量的快速增長&#xff0c;基站的能耗問題也逐漸日益凸顯&#xff0c;基站的用電給運營商帶來了巨大的電費開支壓力&#xff0c;降低5G基站的能耗成為…

actitivi自定義屬性(二)

聲明&#xff1a;此處activiti版本為6.0 此文章介紹后端自定義屬性解析&#xff0c;前端添加自定義屬性方法連接&#xff1a;activiti自定義屬性&#xff08;一&#xff09;_ruoyi activiti自定義標題-CSDN博客 1、涉及到的類如下&#xff1a; 簡介&#xff1a;DefaultXmlPar…

在 JavaScript 中導入和導出 Excel XLSX 文件:SpreadJS

在 JavaScript 中導入和導出 Excel XLSX 文件 2023 年 12 月 5 日 使用 MESCIUS 的 SpreadJS 將完整的 JavaScript 電子表格添加到您的企業應用程序中。 SpreadJS 是一個完整的企業 JavaScript 電子表格解決方案&#xff0c;用于創建財務報告和儀表板、預算和預測模型、科學、工…

【華為OD】給定一個只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串

給定一個只包括 (,),{,},[,] 的字符串 s , 判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 示例 1 : 輸入:s="()" 輸出 : true 示例 2 :

圖的搜索(一):廣度優先搜索算法和深度優先搜索算法

圖的搜索&#xff08;一&#xff09;&#xff1a;廣度優先搜索算法和深度優先搜索算法 本章主要記錄了圖的搜索算法&#xff0c;和可以解決圖的基本問題——最短路徑問題的算法。本章主要對圖搜索的相關算法進行了介紹&#xff1a;廣度優先搜索算法、深度優先搜索算法。 下一…

公網域名如何解析到內網IP服務器——快解析域名映射外網訪問

在本地搭建主機應用后&#xff0c;由于沒有公網IP或沒有公網路由權限&#xff0c;在需要發布互聯網時&#xff0c;就需要用到外網訪問內網的一些方案。由于內網IP在外網不能直接訪問&#xff0c;通常就用通過外網域名來訪問內網的方法。那么&#xff0c;公網域名如何解析到內網…

Tmux中使用Docker報錯 - 解決方案

問題 進入Tmux會話后&#xff0c;在其中使用Docker可能會出現如下報錯&#xff1a; Got permission denied while trying to connect to the Docker ……解決方案 退出tmux會話: tmux detach在tmux會話外部殺掉tmux進程&#xff1a; pkill -f tmux重新進入tmux&#xff1a…

權威認證!景聯文科技入選杭州市2023年第二批省級“專精特新”中小企業認定名單

為深入貫徹黨中央國務院和省委省政府培育專精特新的決策部署&#xff0c;10月7日&#xff0c;杭州市經濟和信息化委員會公示了2023年杭州“專精特新”企業名單&#xff08;第二批&#xff09;。 根據工業和信息化部《優質中小企業梯度培育管理暫行辦法》&#xff08;工信部企業…

【Vue3+Ts項目】硅谷甄選 — 路由配置+登錄模塊+layout組件+路由鑒權

一、路由配置 項目一共需要4個一級路由&#xff1a;登錄&#xff08;login&#xff09;、主頁&#xff08;home&#xff09;、404、任意路由&#xff08;重定向到404&#xff09;。 1.1 安裝路由插件 pnpm install vue-router 1.2 創建路由組件 在src目錄下新建views文件…

Graphpad Prism10.1.0 安裝教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常專業強大的科研醫學生物數據處理繪圖軟件&#xff0c;它可以將科學圖形、綜合曲線擬合&#xff08;非線性回歸&#xff09;、可理解的統計數據、數據組織結合在一起&#xff0c;除了最基本的數據統計分析外&#xff0c;還能自動生成統…

Python:核心知識點整理大全8-筆記

目錄 ?編輯 4.5 元組 4.5.1 定義元組 dimensions.py 4.5.2 遍歷元組中的所有值 4.5.3 修改元組變量 4.6 設置代碼格式 4.6.1 格式設置指南 4.6.2 縮進 4.6.3 行長 4.6.4 空行 4.6.5 其他格式設置指南 4.7 小結 第5章 if語句 5.1 一個簡單示例 cars.py 5.2 條…

現代皮質沙發模型材質編輯

在線工具推薦&#xff1a; 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時&#xff0c;有幾種不同的風格&#xf…

線性容器(QByteArray、QString、QList模板類)、堆棧窗體

QT 線性容器 點擊查看&#xff1a;字符和字節的區別&#xff0c;ASCII、Unicode 和 UTF-8 編碼的區別。&#xff08;&#x1f448; 安全鏈接&#xff0c;放心跳轉&#xff09; QByteArray 思考&#xff1a;char buf[6] “hello”; 如果 C 語言中要利用 buf 內容重新生成 “…

學生備考使用臺燈到底好不好?公認好用的護眼臺燈推薦

在現代生活中&#xff0c;許多學生的學習壓力越來越大&#xff0c;面臨的近視幾率也越來越大&#xff0c;特別是初中生&#xff0c;眼睛發育還未完全&#xff0c;使用不恰當的燈光也會對眼睛造成損害&#xff0c;特別是護眼臺燈。雖然護眼臺燈在功能上能夠提供充足、柔和的光線…

harbor倉庫鏡像遷移腳本

import subprocess import json import logging# 配置日志 logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s)# 替換這里的Harbor倉庫地址和憑據 harbor_url "https://harbor.test.com" harbor_name "harbor.test.co…