java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出
看代碼吧~
/** * excel表格直接下載 */ public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletResponse httpServletResponse,String fileName) throws Exception { //響應(yīng)類型為application/octet- stream情況下使用了這個(gè)頭信息的話,那就意味著不想直接顯示內(nèi)容 httpServletResponse.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); //attachment為以附件方式下載 httpServletResponse.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode( fileName + ".xls", "utf-8")); /** * 代碼里面使用Content-Disposition來確保瀏覽器彈出下載對(duì)話框的時(shí)候。 * response.addHeader("Content-Disposition","attachment");一定要確保沒有做過關(guān)于禁止瀏覽器緩存的操作 */ httpServletResponse.setHeader("Cache-Control", "No-cache"); httpServletResponse.flushBuffer(); wb.write(httpServletResponse.getOutputStream()); wb.close(); } /** * excel以文件的形式導(dǎo)出 * @throws Exception */ public static void exportExcelByFile(HSSFWorkbook wb,String fileName,String path) throws Exception{ ByteArrayOutputStream stream = new ByteArrayOutputStream(); wb.write(stream); FileOutputStream outputStream = new FileOutputStream(path + fileName); outputStream.write(stream.toByteArray()); stream.close(); outputStream.close(); }
java查詢數(shù)據(jù)導(dǎo)出excel并返回給瀏覽器下載
效果圖:
1.點(diǎn)擊導(dǎo)出表按鈕
2.接著就會(huì)出現(xiàn)下圖
3.點(diǎn)擊上圖中的確定按鈕再接著就會(huì)出現(xiàn)下圖
4.點(diǎn)擊上圖中的保存按鈕接著就會(huì)出現(xiàn)下圖,瀏覽器下載完成后的提示
5.打開下載好的文件如下圖
好了,廢話不多少,上代碼
jsp前端代碼
<div style="height:30px;"> <a>時(shí)間:</a> <input id="startDateConsume" type="text" class="easyui-datebox"> <a>-</a> <input id="endDateConsume" type="text" class="easyui-datebox"> <a>消費(fèi)類型:</a> <select id="consumesType" name=""> <option value="0" selected="selected">所有</option> <option value="1">報(bào)名費(fèi)</option> <option value="2">酒水零食類</option> </select> <a>支付狀態(tài):</a> <select id="conPaymentStatus" name=""> <option value="0" selected="selected">所有</option> <option value="1">未支付</option> <option value="2">已支付</option> </select> <a id="btnConsumesSearch" class="easyui-linkbutton" data-options="iconCls:'icon-search'" style="margin-left:10px">查詢</a><a>(查詢出來的數(shù)據(jù)可統(tǒng)計(jì))</a> <a id="consumesOutExcel" class="easyui-linkbutton" style="" data-options="iconCls:'icon-redo'">導(dǎo)出表</a> </div>
js前端代碼
$(function() { //導(dǎo)出excel表 $('#consumesOutExcel').on('click',function(){ exportExcel(); }); }); function exportExcel() { $.messager.confirm('確認(rèn)', '確認(rèn)把該搜索結(jié)果導(dǎo)出Excel表格 ?', function(r) { if (r) { var startTime = $('#startDateConsume').val(); var endTime = $('#endDateConsume').val(); var consumesType = $('#consumesType').val(); var conPaymentStatus = $('#conPaymentStatus').val(); $.messager.progress({ title : '處理中', msg : '請(qǐng)稍后', }); $.messager.progress('close'); location.href="web/vip/exportExcel.xlsx?startTime=" rel="external nofollow" +startTime+"&endTime="+endTime+"&consumesType="+consumesType+"&conPaymentStatus="+conPaymentStatus; } }); }
java后端代碼
@Controller @RequestMapping("/vip") public class VipController { //文件下載:導(dǎo)出excel表 @RequestMapping(value = "/exportExcel.xlsx",method = RequestMethod.GET) @ResponseBody public void exportExcel(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{ //一、從后臺(tái)拿數(shù)據(jù) if (null == request || null == response) { return; } List<VipConsumes> list = null; String startTime = request.getParameter("startTime"); String endTime = request.getParameter("endTime"); int consumesType = Integer.parseInt(request.getParameter("consumesType")); int conPaymentStatus =Integer.parseInt(request.getParameter("conPaymentStatus")); VipConsumesExample example = new VipConsumesExample(); if(consumesType!=0 && conPaymentStatus!=0){ example.createCriteria().andTimeBetween(startTime, endTime).andConsumeTypeEqualTo(consumesType).andStatusEqualTo(conPaymentStatus); }else if(consumesType ==0 && conPaymentStatus!=0) { example.createCriteria().andTimeBetween(startTime, endTime).andStatusEqualTo(conPaymentStatus); }else if(consumesType!=0 && conPaymentStatus==0){ example.createCriteria().andTimeBetween(startTime, endTime).andConsumeTypeEqualTo(consumesType); }else { example.createCriteria().andTimeBetween(startTime, endTime); } list = this.vipConsumesDao.selectByExample(example); //二、 數(shù)據(jù)轉(zhuǎn)成excel request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("application/x-download"); String fileName = "消費(fèi)記錄.xlsx"; fileName = URLEncoder.encode(fileName, "UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + fileName); // 第一步:定義一個(gè)新的工作簿 XSSFWorkbook wb = new XSSFWorkbook(); // 第二步:創(chuàng)建一個(gè)Sheet頁(yè) XSSFSheet sheet = wb.createSheet("startTimeendTime"); sheet.setDefaultRowHeight((short) (2 * 256));//設(shè)置行高 sheet.setColumnWidth(0, 4000);//設(shè)置列寬 sheet.setColumnWidth(1,5500); sheet.setColumnWidth(2,5500); sheet.setColumnWidth(3,5500); sheet.setColumnWidth(11,3000); sheet.setColumnWidth(12,3000); sheet.setColumnWidth(13,3000); XSSFFont font = wb.createFont(); font.setFontName("宋體"); font.setFontHeightInPoints((short) 16); XSSFRow row = sheet.createRow(0); XSSFCell cell = row.createCell(0); cell.setCellValue("流水號(hào) "); cell = row.createCell(1); cell.setCellValue("微信名 "); cell = row.createCell(2); cell.setCellValue("微信訂單號(hào)"); cell = row.createCell(3); cell.setCellValue("消費(fèi)時(shí)間"); cell = row.createCell(4); cell.setCellValue("消費(fèi)類型"); cell = row.createCell(5); cell.setCellValue("剩余積分 "); cell = row.createCell(6); cell.setCellValue("新增積分 "); cell = row.createCell(7); cell.setCellValue("扣除積分 "); cell = row.createCell(8); cell.setCellValue("消費(fèi)金額"); cell = row.createCell(9); cell.setCellValue("支付方式"); cell = row.createCell(10); cell.setCellValue("支付狀態(tài) "); cell = row.createCell(11); cell.setCellValue("錢包原始金額"); cell = row.createCell(12); cell.setCellValue("錢包扣除金額"); cell = row.createCell(13); cell.setCellValue("錢包剩余金額"); XSSFRow rows; XSSFCell cells; for (int i = 0; i < list.size(); i++) { // 第三步:在這個(gè)sheet頁(yè)里創(chuàng)建一行 rows = sheet.createRow(i+1); // 第四步:在該行創(chuàng)建一個(gè)單元格 cells = rows.createCell(0); // 第五步:在該單元格里設(shè)置值 cells.setCellValue(list.get(i).getConsumeId()); cells = rows.createCell(1); cells.setCellValue(list.get(i).getName()); cells = rows.createCell(2); cells.setCellValue(list.get(i).getOrderNumber()); cells = rows.createCell(3); cells.setCellValue(list.get(i).getTime()); cells = rows.createCell(4); if (list.get(i).getConsumeType() == 2) { cells.setCellValue("酒水零食費(fèi)"); } else { cells.setCellValue("報(bào)名費(fèi)"); } cells = rows.createCell(5); cells.setCellValue(list.get(i).getIntegral()); cells = rows.createCell(6); cells.setCellValue(list.get(i).getIntegralIn()); cells = rows.createCell(7); cells.setCellValue(list.get(i).getIntegralOut()); cells = rows.createCell(8); cells.setCellValue(list.get(i).getMoney()); cells = rows.createCell(9); if (list.get(i).getPayment() == 2) { cells.setCellValue("積分抵現(xiàn)"); } else if (list.get(i).getPayment() == 3) { cells.setCellValue("微信支付"); } else if (list.get(i).getPayment() == 4) { cells.setCellValue("現(xiàn)金"); } else if (list.get(i).getPayment() == 1) { cells.setCellValue("錢包"); } cells = rows.createCell(10); if (list.get(i).getStatus() == 2) { cells.setCellValue("已支付"); } else if (list.get(i).getStatus() == 1) { cells.setCellValue("未支付"); } cells = rows.createCell(11); cells.setCellValue(list.get(i).getWalletOriginal()); cells = rows.createCell(12); cells.setCellValue(list.get(i).getWalletOut()); cells = rows.createCell(13); cells.setCellValue(list.get(i).getWalletSurplus()); } try { OutputStream out = response.getOutputStream(); wb.write(out); out.close(); wb.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue通過接口直接下載java生成好的Excel表格案例
- React獲取Java后臺(tái)文件流并下載Excel文件流程解析
- java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的方法
- Java poi導(dǎo)出Excel下載到客戶端
- Java對(duì)Excel表格的上傳和下載處理方法
- java后臺(tái)利用Apache poi 生成excel文檔提供前臺(tái)下載示例
- JavaWeb導(dǎo)出Excel文件并彈出下載框
- JavaWeb動(dòng)態(tài)導(dǎo)出Excel可彈出下載
- java常用工具類之Excel操作類及依賴包下載
- Java從服務(wù)端下載Excel模板文件的兩種方法
相關(guān)文章
IDEA 2021.2 激活教程及啟動(dòng)報(bào)錯(cuò)問題解決方法
這篇文章主要介紹了IDEA 2021.2 啟動(dòng)報(bào)錯(cuò)及激活教程,文章開頭給大家介紹了idea2021最新激活方法,關(guān)于idea2021啟動(dòng)報(bào)錯(cuò)的問題小編也給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10Java動(dòng)態(tài)代理Proxy應(yīng)用和底層源碼詳細(xì)分析
Java動(dòng)態(tài)代理是一種在運(yùn)行時(shí)生成代理類的機(jī)制,用于代替手動(dòng)編寫代理類的過程,這篇文章主要給大家介紹了關(guān)于Java動(dòng)態(tài)代理Proxy應(yīng)用和底層源碼詳細(xì)分析的相關(guān)資料,需要的朋友可以參考下2024-03-03java實(shí)現(xiàn)163郵箱發(fā)送郵件到qq郵箱成功案例
這篇文章主要為大家分享了java實(shí)現(xiàn)163郵箱發(fā)送郵件到qq郵箱成功案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Spring Security實(shí)現(xiàn)兩周內(nèi)自動(dòng)登錄"記住我"功能
登錄過程中經(jīng)常使用的“記住我”功能,也就是我們經(jīng)常會(huì)在各種網(wǎng)站登陸時(shí)見到的"兩周內(nèi)免登錄",“三天內(nèi)免登錄”的功能。今天小編給大家分享基于Spring Security實(shí)現(xiàn)兩周內(nèi)自動(dòng)登錄"記住我"功能,感興趣的朋友一起看看吧2019-11-11深入剖析springBoot中的@Scheduled執(zhí)行原理
這篇文章主要介紹了springBoot中的@Scheduled執(zhí)行原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11java實(shí)現(xiàn)OpenGL ES紋理映射的方法
這篇文章主要介紹了java實(shí)現(xiàn)OpenGL ES紋理映射的方法,以實(shí)例形式較為詳細(xì)的分析了紋理映射的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06基于Transactional事務(wù)的使用以及注意說明
這篇文章主要介紹了Transactional事務(wù)的使用以及注意說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07