Java實現下載excel模板,并實現自定義下拉框

@GetMapping("excel/download")@ApiOperation(value = "模板下載")public void getUserRecordTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException {OutputStream outputStream = response.getOutputStream();InputStream inputStream = new ClassPathResource("example/excel/download_template_user_record.xlsx").getInputStream();try {String fileName = "導入模板";String fileName3 = URLEncoder.encode(fileName, "utf-8");response.setHeader("Content-disposition", "attachment;filename*=utf-8''"+fileName3+".xlsx");response.setContentType("application/msexcel");// 定義輸出類型response.setCharacterEncoding("UTF-8");//獲取該類聲明的所有字段Field[] fields = UserRecordExcelExportResult.class.getDeclaredFields();//響應字段對應的下拉集合Map<Integer, String[]> map = new HashMap<>();Field field = null;
//從數據庫里獲取下拉框選項List<XcUserLevel> list = xcUserLevelService.list();
//			List<SysDept> list1 = sysDeptService.list();List<String> collect = list.stream().map(XcUserLevel::getName).collect(Collectors.toList());
//			List<String> collect1 = list1.stream().map(SysDept::getName).collect(Collectors.toList());
//找到需要對應的下拉框位置
//			map.put(11,collect1.toArray(new String[0]));map.put(12,collect.toArray(new String[0]));// 循環判斷哪些字段有下拉數據集,并獲取/*for (int i = 0; i < fields.length; i++) {field = fields[i];// 解析注解信息DropDownSetField dropDownSetField = field.getAnnotation(DropDownSetField.class);if (null != dropDownSetField) {//調用下拉框數據源的方法String[] source = ResoveDropAnnotationUtil.dynamicListResove2(dropDownSetField, field.getName(),staffId);if (null != source && source.length > 0) {map.put(i, source);}}}*/ExcelWriter excelWriter = EasyExcel.write(outputStream)
//將保存下拉框的map放入excelWriter.registerWriteHandler(new CustomSheetWriteHandler(map)).withTemplate(inputStream).build();WriteSheet writeSheet = EasyExcel.writerSheet(0,"Sheet1").build();excelWriter.write(new ArrayList<>(), writeSheet);excelWriter.finish();outputStream.close();} catch (Exception e) {e.printStackTrace();}}

從resoues包里獲取excel文件

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

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

相關文章

成立一家無人機培訓機構需要哪些基礎配置

成立一家無人機培訓機構&#xff0c;需要一系列基礎配置來確保教學質量、學員安全以及機構的正常運營。以下是根據公開發布的信息整理出的關鍵基礎配置&#xff1a; 一、場地配置 1. 飛行場&#xff1a;提供一個安全、寬敞的室外飛行環境&#xff0c;面積最好大于三千平米&…

交換機性能詳解

1. 背板帶寬 只有模塊化交換機&#xff08;擁有可擴展插槽&#xff0c;可靈活改變端口數量&#xff09;才有這個概念&#xff0c;固定端換機是沒有這個概念的。并且固定端換機的背板容量和交換容量大小是相等的。 背板帶寬是交換機的總數據處理能力&#xff0c;由硬件架構設…

讀“將計算性能調高到極致的基點秘訣”的嘗試

看到一篇文章&#xff0c;說最近閱讀LAMMPS源碼&#xff0c;悟出了很多道理。在計算性能優化這塊&#xff0c;源代碼作者很多寫法我最初不以為意&#xff0c;后來發現是作者有意為之&#xff0c;就是為了把計算性能優化到極致。做計算仿真軟件&#xff0c;也特別需要注意這些吧…

Gitea代碼倉服務搭建

特點與優勢 輕量級:Gitea是一個輕量級的Git服務,提供了快速、穩定的代碼托管和協作開發環境。它資源占用低,適合在資源受限的環境中運行。易于安裝和部署:Gitea提供了簡單易用的安裝和部署方式,支持多種安裝方式,包括二進制文件、Docker容器等,并提供了詳細的文檔和配置…

leetcode hot 小偷

class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""# 使用動態規劃&#xff0c;把之前的給保存起來ans[0,nums[-1]]for i in range(1,len(nums)):ans.append(max(ans[-1],ans[-2]nums[-1*i-1]))return ans[-1]…

端口被占用

端口8080被占用 哈哈哈&#xff0c;我是因為后端項目跑錯了&#xff0c;兩個項目后端名稱太像了&#xff1b; &#xff08;1&#xff09;netstat -aon | findstr 8080&#xff0c;找到占用8080端口的進程號&#xff0c;獲取對應的進程號pid&#xff1b; &#xff08;2&#…

文件本地和OSS上傳

這里寫目錄標題 前端傳出文件后端本地存儲阿里云OSS存儲上傳Demo實現上傳ConfigurationProperties 前端傳出文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>上傳文件</title> </head&g…

[人工智能] 結合最新技術:Transformer、CLIP與邊緣計算在提高人臉識別準確率中的應用

隨著人工智能的快速發展&#xff0c;特別是深度學習和自然語言處理領域的革命性技術&#xff0c;越來越多的前沿技術被應用于人臉識別中。Transformer架構、CLIP模型以及邊緣計算的結合&#xff0c;正成為提升人臉識別準確率和應用效能的關鍵技術路徑。特別是在多樣化場景下&am…

Python的*args和**kwargs

參考 總結&#xff1a; &#xff08;1&#xff09;*args用于在函數中處理傳遞的位置參數序列&#xff1b; &#xff08;2&#xff09;**kwargs則用于處理傳遞的關鍵字參數字典。 &#xff08;3&#xff09;示例&#xff1a; def complex_function(first, *args, **kwargs)…

Vue3 + ElementPlus動態合并數據相同的單元格(超級詳細版)

最近的新項目有個需求需要合并單元列表。ElementPlus 的 Table 提供了合并行或列的方法&#xff0c;可以參考一下https://element-plus.org/zh-CN/component/table.html 但項目中&#xff0c;后臺數據返回格式和指定合并是動態且沒有規律的&#xff0c;Element 的示例過于簡單&…

免費又開源:企業級物聯網平臺的新選擇 ThingsPanel

在開源領域&#xff0c;選擇合適的開源協議是開發者和企業能否充分利用平臺的關鍵。ThingsPanel&#xff0c;作為一個專注于物聯網的開源平臺&#xff0c;近日將協議從 AGPLv3 改為更開放的 Apache 2.0。這一改變對開發者和用戶意味著什么&#xff1f; 為什么協議要從 AGPLv3 轉…

C# 設計模式(結構型模式):代理模式

C# 設計模式&#xff08;結構型模式&#xff09;&#xff1a;代理模式 在軟件開發中&#xff0c;有時我們需要通過某種方式間接地訪問一個對象&#xff0c;這時就可以使用代理模式&#xff08;Proxy Pattern&#xff09;。代理模式通過引入一個代理對象來控制對目標對象的訪問…

關于AI面試系統2025年趨勢評估!

在快速發展的科技浪潮中&#xff0c;AI技術正以前所未有的速度滲透到各行各業。企業招聘領域&#xff0c;作為人才選拔的關鍵環節&#xff0c;也不例外地迎來了AI面試系統的廣泛應用和持續創新。2025年&#xff0c;AI面試系統不僅成為企業招聘的主流工具&#xff0c;更在智能化…

MySQL 01 02 章——數據庫概述與MySQL安裝篇

一、數據庫概述 &#xff08;1&#xff09;為什么要使用數據庫 數據庫可以實現持久化&#xff0c;什么是持久化&#xff1a;數據持久化意味著將內存中的數據保存到硬盤上加以“固化”持久化的主要作用是&#xff1a;將內存中的數據存儲在關系型數據庫中&#xff0c;當然也可以…

Linux 揮別 WinXP 時代協議,USB RNDIS 即將退場

IT之家 1 月 2 日消息&#xff0c;Linux 基金會研究員 Greg Kroah-Hartman 計劃在 Linux 內核中&#xff0c;徹底移除 USB RNDIS 協議驅動。 IT之家查詢公開資料&#xff0c;USB RNDIS 是一種遠程網絡驅動接口規范&#xff0c;將 USB 設備模擬成網卡&#xff0c;從而在計算機和…

Vue3 組件

文章目錄 Vue3 組件概述根組件定義和使用組件樣式控制全局樣式局部樣式深度樣式 Vue3 組件 概述 組件允許我們將 UI 劃分為獨立的、可重用的部分&#xff0c;并且可以對每個部分進行單獨的思考。在實際應用中&#xff0c;組件常常被組織成層層嵌套的樹狀結構&#xff1a; 根…

怎么在家訪問公司服務器?

在日常工作中&#xff0c;特別是對信息技術從業者而言&#xff0c;工作往往離不開公司的服務器。他們需要定期訪問服務器&#xff0c;獲取一些關鍵的機密文件或數據。如果您在家辦公&#xff0c;并且需要處理未完成的任務&#xff0c;同時需要從公司服務器獲取所需的數據&#…

AI 自動化編程對編程教育的影響

AI 自動化編程的未來 引言 你是否曾想過&#xff0c;未來的程序員需要掌握哪些技能呢&#xff1f;隨著人工智能的迅猛發展&#xff0c;特別是生成式AI工具的普及&#xff0c;編程的世界正在發生翻天覆地的變化。編程教育也在這種環境下進行著深刻的轉型。那么&#xff0c;AI …

IP-Guard對SolidWorks PDM 加密授權說明

SolidWorks PDM 加密授權說明 一、簡介 該功能主要實現了,在SolidWorks Enterprise PDM環境下,可以正常"檢入"和"檢出" 加密文件,并可以正常預覽加密文件。 二、操作說明 2.1 設置加密授權 安裝客戶端后,登錄控制臺,選擇客戶端計算機或組右鍵選擇“…

AI 助力游戲開發中的常用算法實現

在當今的游戲開發領域&#xff0c;人工智能&#xff08;AI&#xff09;技術的應用已經成為推動行業發展的關鍵力量。AI不僅能夠提升游戲的智能化水平&#xff0c;還能夠增強玩家的沉浸感和游戲體驗。隨著技術的進步&#xff0c;AI在游戲設計、開發和測試中的應用越來越廣泛&…