日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot + iframe 前后端实现简单实用的下载文件、导出excel案例

發(fā)布時間:2023/12/10 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot + iframe 前后端实现简单实用的下载文件、导出excel案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家JavaWeb項目中應(yīng)該都會遇到下載文件或?qū)С鰁xcel的需求,特此分享此文,簡單明了,可用于實際項目。

1、前端頁面,模擬兩個按鈕:下載文件、導(dǎo)出excel?

注:本案例是使用 SpringBoot 構(gòu)建的項目,我這里使用的是之前介紹SpringBoot 實現(xiàn)CORS而創(chuàng)建的工程,也可以自己重新創(chuàng)建一個新的SpringBoot項目即可,然后新增如下一個html或jsp頁面,使用iframe隱藏域,這里根據(jù)id給 iframe標(biāo)簽,設(shè)置src屬性(改變),會發(fā)起一個請求。

不熟悉的可以移步我的另一篇文章:https://blog.csdn.net/a1036645146/article/details/98843846?

2、下載文件

這里只是測試,直接是一段自定義內(nèi)容,然后通過 OutputStream 輸出流進(jìn)行響應(yīng)。如果是實際業(yè)務(wù),如需從FAST服務(wù)器下載,將此替換為自己的下載方法即可,并將下載的內(nèi)容轉(zhuǎn)為byte[] 字節(jié)數(shù)組,通過?OutputStream 輸出字節(jié)內(nèi)容即可,并且記得設(shè)置response響應(yīng)頭信息等,具體如下:

/*** @description: 下載測試* @author: xianhao_gan* @date: 2019/08/15**/ @Controller public class TestController {@RequestMapping("/download")public void download(HttpServletRequest request, HttpServletResponse response){try {//用于輸出響應(yīng)流OutputStream out = response.getOutputStream();byte[] content = "測試下載內(nèi)容:hello,stwen.".getBytes();//如果從自己fast下載//String path = request.getParameter("path");//byte[] content = FDSTUtil.download(path);//文件名也可以從前端傳遞過來//String fileName = request.getParameter("fileName");String fileName = "stwen.txt";//設(shè)置響應(yīng)頭信息// rep.setContentType("Image/" + fileName); // 設(shè)置相應(yīng)類型,告訴瀏覽器輸出的內(nèi)容為圖片response.setHeader("Pragma", "No-cache"); // 設(shè)置響應(yīng)頭信息,告訴瀏覽器不要緩存此內(nèi)容response.setHeader("Cache-Control", "no-cache");response.setHeader("Content-Disposition", "attachment;filename=" +new String(fileName.getBytes("UTF-8"), "iso-8859-1"));response.setContentType("application/octet-stream");//輸出并關(guān)閉out.write(content);out.flush();out.close();} catch (IOException e) {e.printStackTrace();}} }

3、導(dǎo)出excel文件

提供一個控制器接口方法,接收前端導(dǎo)出請求:

@RequestMapping("/excel")public void excel(HttpServletRequest request, HttpServletResponse response) throws Exception{OutputStream out = response.getOutputStream();try {//封裝好數(shù)據(jù)到Workbook對象,然后通過OutputStream輸出Workbook workBook = ExcelUtil.exportExcel();if (workBook != null) {String name = new String("stwen.xls");response.reset();response.setContentType("Content-Type: application/vnd.ms-excel");response.addHeader("Content-Disposition", "attachment;filename=\"" + name + "\"");workBook.write(out);out.flush();out.close();}} catch (Exception e) {e.printStackTrace();//先清空輸出流里面的內(nèi)容response.reset();String returnS = "<script type='text/javascript'>alert('導(dǎo)出失敗!');</script>";out.write(returnS.getBytes("UTF-8"));}}

WorkBook依賴如下:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency>

excelUtil工具類,實際項目,可能需要讀取數(shù)據(jù)庫,而excel也可以配置模板,封裝到Workbook 對象,返回控制器,通過輸出流響應(yīng)

package com.stwen.cors.util;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook;/*** @description: excel工具類* @author: xianhao_gan* @date: 2019/08/15**/ public class ExcelUtil {/*** 導(dǎo)出excel* @return* @throws Exception*/public static Workbook exportExcel() throws Exception{//可選擇模板是.xls格式還是.xlsx格式HSSFWorkbook workbook = new HSSFWorkbook();//創(chuàng)建一個sheet表,可設(shè)置多個sheetSheet sheet = workbook.createSheet("sheet1");sheet.setColumnWidth(0,6000 );sheet.setColumnWidth(1,6000 );sheet.setColumnWidth(2,6000 );String []tableHeader = new String[] {"工號","姓名","職位"};HSSFRow firstRow = (HSSFRow) sheet.createRow((short) 0);for(int i = 0; i < tableHeader.length; i++){HSSFCell cell = firstRow.createCell((short)i);cell.setCellStyle(workbook.createCellStyle());cell.setCellValue(tableHeader[i]);}return workbook;} }

4、啟動項目

瀏覽器訪問項目地址,然后分別點擊“下載文件”、“導(dǎo)出excel”

stwen.txt文件內(nèi)容如下:

stwen.xls?

看完后是不是覺得下載很簡單,覺得有用點個贊再走吧0.0,整理不易。

本文來自:CSDN? 作者:stwen_gan??https://blog.csdn.net/a1036645146/article/details/99639041

轉(zhuǎn)載請注明出處,謝謝。

總結(jié)

以上是生活随笔為你收集整理的SpringBoot + iframe 前后端实现简单实用的下载文件、导出excel案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。