Java 下載excel文件

一、背景

微信小程序需要導出excel文件,后端技術Java,前端使用uniapp框架,使用excel模板。

二、excel 報表模板

需要補充的內容是以下標記問號的,其中有個表格,內容是動態添加的

三、Java端代碼實現

關鍵步驟,省略數據查詢

//……
//上面是操作數據庫的內容,就不寫了
String classPath = "xxx/xxxx.xls";//excel模板位置,我是放在與com同級的目錄下了
ClassPathResource classPathResource = new ClassPathResource(classPath);
InputStream is = classPathResource.getInputStream();
//1. 創建一個 workbook 對象
HSSFWorkbook workbook = new HSSFWorkbook(is);
HSSFSheet sheetAt = workbook.getSheetAt(0);//獲取第一個sheet
//因為是模板,且這幾行內容固定,所以這個地方可以寫死
sheetAt.getRow(2).getCell(1).setCellValue(sqmc);//給第三行第二個單元格添加內容
sheetAt.getRow(2).getCell(4).setCellValue(format_sbny);//給第三行第五個單元格添加內容
int initRow = 4;//動態行添加是從第五行開始的,所以設置為4,因為首行是0
if (ds_list.size() != 0) {//這是數據庫查詢到的表格內容,ds_list是一個對象數組//從第5行開始往下移動 ds_list.size()行,在第initRow + ds_list.size()結束,true:表示是否更新單元格的公式。false:表示是否復制行高。sheetAt.shiftRows(initRow, initRow + ds_list.size(), ds_list.size(), true, false);for (int i = 0; i < ds_list.rowCount(); i++) {JSONObject obj = ds_list.getRow(i);//這里的這個getRow()方法是我們項目自己封裝的,不要使用,實質就是獲取對象數組中的對象HSSFRow row = sheetAt.createRow(initRow);row.setHeightInPoints(30);//設置行高30磅 HSSFCellStyle cellStyle = workbook.createCellStyle();//創建單元格樣式cellStyle.setAlignment(HorizontalAlignment.CENTER);// 設置水平居中顯示cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 設置垂直居中顯示// 設置邊框樣式cellStyle.setBorderTop(BorderStyle.THIN);cellStyle.setBorderBottom(BorderStyle.THIN);cellStyle.setBorderLeft(BorderStyle.THIN);cellStyle.setBorderRight(BorderStyle.THIN);HSSFFont cellFont = workbook.createFont();    // 創建字體cellFont.setFontHeightInPoints((short)12);    // 將字體大小cellFont.setFontName("宋體");             // 設置字體為 宋體 應用到當前單元格上cellStyle.setFont(cellFont); // 字體應用到 標題樣式上for (int j = 0; j < 5; j++) {row.createCell(j);HSSFCell cell = row.getCell(j);cell.setCellStyle(cellStyle);}//接下來就是賦值row.getCell(0).setCellValue(i + 1);row.getCell(1).setCellValue(obj.getString("xm", ""));row.getCell(2).setCellValue(obj.getString("sfzhm", ""));row.getCell(3).setCellValue(obj.getString("swsj", ""));row.getCell(4).setCellValue(obj.getString("bz", ""));initRow++;}
}
//給其他位置賦值
sheetAt.getRow(initRow).getCell(1).setCellValue(qtsm);//其他說明
sheetAt.getRow(initRow + 1).getCell(1).setCellValue(tbr_xm);//
sheetAt.getRow(initRow + 1).getCell(4).setCellValue(tbrq);//填表日期
sheetAt.getRow(initRow + 2).getCell(1).setCellValue(jbr);//經辦人
sheetAt.getRow(initRow + 2).getCell(4).setCellValue(sbrq);//收表日期String fileName = "xxxxxx.xls";//設置文件名
// 設置響應內容類型為Excel文件
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
// 設置響應頭,告訴瀏覽器以附件形式下載文件,并指定文件名
response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(fileName,"UTF-8"));
OutputStream output = response.getOutputStream();//HttpServletResponse response
try {workbook.write(output);output.flush();
} catch (IOException e) {e.printStackTrace();
} finally {if (output != null) {output.close();}
}

通過上述的操作,然后就可以實現下載了。

四、其他

如果是小程序,那么可以復制下載鏈接,然后在手機瀏覽器打開,即可實現下載功能

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

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

相關文章

Topaz Video AI:一鍵提升視頻品質,智能重塑影像魅力 mac/win版

Topaz Video AI是一款革命性的視頻智能處理軟件&#xff0c;它利用先進的機器學習和人工智能技術&#xff0c;為視頻創作者提供了前所未有的視頻增強和修復功能。無論您是專業視頻編輯師、攝影師&#xff0c;還是熱愛視頻創作的愛好者&#xff0c;Topaz Video AI都能幫助您輕松…

webpack打包效率優化,webpack打包體積優化

優化 webpack 打包效率的方法 使用增量構建和熱更新&#xff1a;在開發環境下&#xff0c;使用增量構建和熱更新功能&#xff0c;只重新構建修改過的模塊&#xff0c;減少整體構建時間。避免無意義的工作&#xff1a;在開發環境中&#xff0c;避免執行無意義的工作&#xff0c…

2403C++,C++20協程庫

原文 基于C20協程的http庫--cinatra cinatra是基于C20無棧協程實現的跨平臺,僅頭,高性能,易用的http/https庫(http1.1),包括httpserver和httpclient,功能完備,不僅支持最普通的getpost等請求,還支持restfulapi,websocket,chunked,ranges,multipart,靜態文件服務和反向代理等功…

Python程序的流程

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 年輕是我們唯一擁有權利去編制夢想的時…

【前端素材】推薦優質后臺管理系統Annex平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理網站、應用程序或系統的管理界面&#xff0c;通常由管理員和工作人員使用。它提供了訪問和控制網站或應用程序后臺功能的工具和界面&#xff0c;使其能夠管理用戶、內容、數據和其他各種功能。 2、功能需求 后臺管理系…

利用python爬取本站的所有博客鏈接

目錄 前因 首先的嘗試 解決辦法 導入包 定義一個json配置文件 打開瀏覽器執行操作 注意 提取源代碼并且進行篩選鏈接 執行結果 前因 由于自己要把csdn的博客同步到hugo中&#xff0c;把博客轉為md格式已經搞好了&#xff0c;但是由于csdn的圖片具有防盜鏈&#xff0c;…

vue實現商品評分效果(通過插件實現)

Vue.js 實現了一個簡單的商品評分功能。用戶可以通過點擊星星來修改商品的評分&#xff0c;并且評分顯示了相應的星星數。 廢話不多說&#xff0c;直接上代碼 方法一&#xff1a; <template><div><avue-form :model"formData"><avue-form-it…

2024年經典【自動化面試題】附答案

一、請描述一下自動化測試流程&#xff1f; 自動化測試流程一般可以分為以下七步&#xff1a; 編寫自動化測試計劃&#xff1b; 設計自動化測試用例&#xff1b; 編寫自動化測試框架和腳本&#xff1b; 調試并維護腳本&#xff1b; 無人值守測試&#xff1b; 后期腳本維…

【數據結構】深入探討二叉樹的遍歷和分治思想(一)

&#x1f6a9;紙上得來終覺淺&#xff0c; 絕知此事要躬行。 &#x1f31f;主頁&#xff1a;June-Frost &#x1f680;專欄&#xff1a;數據結構 &#x1f525;該文章主要講述二叉樹的遞歸結構及分治算法的思想。 目錄&#xff1a; &#x1f30d;前言&#xff1a;&#x1f30d;…

Sora 原理與技術實戰筆記一

b 站視頻合集 【AIX組隊學習】Sora原理與技術實戰&#xff1a;Sora技術路徑詳解 Sora 技術報告&#xff08;OpenAI&#xff09; huggingsd 文生圖視頻系列的一個開源項目 最強視頻生成模型Sora相關技術解析 https://github.com/lichao-sun/SoraReview 驚艷效果&#xff1a; 長…

【Linux】screen

文章目錄 一、screen二、功能三、使用3.1 安裝3.2 常用參數3.3 狀態3.4 使用3.4.1 終端列表3.4.2 新建screen3.4.3 detached3.4.4 回到終端3.4.5 清除終端 一、screen screen為多視窗管理程序。在服務器上搭建一些服務的時候&#xff0c;經常要用到screen命令。例如某些服務開…

云吶智能運維包含哪些內容?運維未來的發展方向是什么?

智能運維&#xff08;AIOps&#xff09;是一種使用人工智能應用程序來調節IT操作和維護的實踐方式。它結合了大數據和機器學習技術&#xff0c;旨在自動化和改進IT操作和維護任務&#xff0c;如故障檢測、因果分析和自動故障修復。以下是智能操作和維護的具體內容、挑戰和解決方…

使用Node.js構建一個簡單的聊天機器人

當談到人工智能&#xff0c;我們往往會想到什么&#xff1f;是智能語音助手、自動回復機器人等。在前端開發領域中&#xff0c;我們也可以利用Node.js來構建一個簡單而有趣的聊天機器人。本文將帶你一步步實現一個基于Node.js的聊天機器人&#xff0c;并了解其工作原理。 首先…

文生圖項目總結

文生圖 功能點 頁面進來獲取背景圖url和圖片寬高&#xff08;根據比例和手機屏幕處理過的寬高&#xff09;渲染圖片&#xff08;背景圖最后生成圖片模糊&#xff0c;換成img展示解決&#xff09;添加多個文字&#xff0c;編輯文字內容&#xff0c;拖拽改變文字位置&#xff0c…

上云還是下云,最大挑戰是什么?| 對話章文嵩、畢玄、王小瑞

近半年來&#xff0c;公有云領域頻頻發生阿里云、滴滴等平臺崩潰事件&#xff0c;與此同時&#xff0c;馬斯克的“X 下云省錢”言論引起了廣泛關注&#xff0c;一時間&#xff0c;“上云”和“下云”成為熱議話題。在最近舉辦的 AutoMQ 云原生創新論壇上&#xff0c;AutoMQ 聯合…

大數據可視化python01

import pandas as pd import matplotlib.pyplot as plt# 設置中文改寫字體 plt.rcParams[font.sans-serif] [SimHei]# 讀取數據 data pd.read_csv(C:/Users/wzf/Desktop/讀取數據進行數據可視化練習/實訓作業練習/瓜果類單位面積產量.csv ,encoding utf-8)#輸出 print(data)…

springcloud alibaba組件簡介

一、Nacos 服務注冊中心/統一配置中心 1、介紹 Nacos是一個配置中心&#xff0c;也是一個服務注冊與發現中心。 1.1、配置中心的好處&#xff1a; &#xff08;1&#xff09;配置數據脫敏 &#xff08;2&#xff09;防止出錯&#xff0c;方便管理 &#xff08;3&#xff…

一本通 1403:素數對

在判斷素數對的兩個數是否都為素數時可以只判斷數的一半 #include<bits/stdc.h> using namespace std; bool su(int a,int b){ for(int i2;i<sqrt(a);i){ if(a%i0){ return 0; } } for(int i2;i<sqrt(b);i){ if(…

AI大預言模型——ChatGPT在地學、GIS、氣象、農業、生態、環境等應用

原文鏈接&#xff1a;AI大預言模型——ChatGPT在地學、GIS、氣象、農業、生態、環境等應用 一開啟大模型 1 開啟大模型 1)大模型的發展歷程與最新功能 2)大模型的強大功能與應用場景 3)國內外經典大模型&#xff08;ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Di…

Java底層自學大綱_中間件原理篇

中間件原理專題_自學大綱所屬類別學習主題建議課時&#xff08;h&#xff09; A Web服務器Tomcat8原理分析001 Tomcat8底層架構模式2.5 A Web服務器Tomcat8原理分析002 Tomcat8底層源碼深度分析2.5 A Web服務器Tomcat8原理分析003 站在微服務架構角度優化Tomcat82.5 B 分布…