Demo系列一之 Form表單下載Excel檔案
效果圖區:
程式碼區:
- 前端程式碼,只提供點選事件中的內容;
//"匯出Execl"按鈕點選事件
$("#export").click(function(){
var form = $("<form>");
$('body').append(form);
form.attr('style','display:none');
form.attr('target','');
form.attr('method' ,'post');
form.attr('action','${context_path}/ptsp/export');//下載檔案的請求路徑
//對應查詢條件的開始時間
var input1 = $('<input>');
input1.attr('type','hidden');
input1.attr('name','spmcStr');
input1.attr('value',$("#spmcStr" ).val());
form.append(input1);
//對應查詢條件的結束時間
var input2 = $('<input>');
input2.attr('type','hidden');
input2.attr('name','dpmcStr');
input2.attr('value',$("#dpmcStr").val());
form.append(input2);
//對應查詢條件的店鋪名稱
var input3 = $('<input>');
input3.attr('type','hidden');
input3.attr('name','beginTime');
input3.attr('value',$("#beginTime").val());
form.append(input3);
//對應查詢條件的商品名稱
var input4 = $('<input>');
input4.attr('type','hidden');
input4.attr('name','endTime');
input4.attr('value',$("#endTime").val());
form.append(input4);
form.submit();
});
- 後端程式碼,比較常用的ssm結構;
/**
* <p>Description: 匯出Excel檔案</p>
* @param response
* @param request
* @param ptsp 頁面物件引數
* @author wjt
* @date 2018年7月25日
*/
@RequestMapping("/export")
public void export(HttpServletResponse response,HttpServletRequest request,LptPtsp ptsp){
Map<String,Object> params = new HashMap<String,Object>();
String dpmcs = ptsp.getDpmcStr();
String spmcs = ptsp.getSpmcStr();
params.put("beginTime", ptsp.getBeginTime());
params.put("endTime", ptsp.getEndTime());
params.put("dpmcs", ptsp.getDpmcs());
params.put("spmcs", ptsp.getSpmcs());
//返回的資料集合,業務層及持久層程式碼就不展示了,主要就是根據條件返回物件實體.
List<LptPtsp> ptsps = lptDpSpService.findPtspListNoTPage(params);
//返回結構後,呼叫ExcelUtils公共類完成匯出.
ExcelUtils.exportPtSpExcel(response,request,ptsps);
}
- ExcelUtils公共類程式碼
package com.chw.system.util;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.chw.model.lpt.LptPtsp;
public class ExcelUtils {
/**
* 建立excel
* @param model
* @author wjt
* @serialData 2014-11-13
*/
public static void CreateExcel(String filepath,String fileName, String[] title,HashMap<String, String []> hashmap,HttpServletResponse response){
// 第一步,建立 工作簿 webbook
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中新增一個sheet,對應Excel檔案中的sheet
HSSFSheet sheet = wb.createSheet(fileName.substring(0, fileName.indexOf("_")+1));
// 第三步,在sheet中新增表頭第0行,注意老版本poi對Excel的行數列數有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,建立單元格,並設定值表頭 設定表頭居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式
HSSFCell cell = null;
for (int k = 0; k < title.length; k++) {// 新增標題行
cell = row.createCell(k);
cell.setCellValue(title[k]);// 給單元格賦值
sheet.setColumnWidth((short) k,5000);
}
// 第五步,讀取資料 插入Excel
int i =0;
Iterator<Entry<String, String []>> iter = hashmap.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String, String []> info= iter.next();
row = sheet.createRow(i+1);
row.createCell(0).setCellValue(i+1);
for (int j = 0; j < info.getValue().length; j++){
row.createCell(j+1).setCellValue(info.getValue()[j]);
}
i++;
}
try{
//第六步 儲存臨時檔案
FileOutputStream fout = new FileOutputStream(filepath+fileName);
wb.write(fout);
fout.close();
//第八步 下載檔案
downLoad(filepath,fileName,response, false);
}catch(Exception e) {
e.printStackTrace();
}finally {
// 第九步 刪除臨時檔案
File file = new File(filepath+fileName);
if (file.exists()) {
file.delete();
}
}
}
/**
* 獲取匯出路徑
* @param request
* @return
*/
@SuppressWarnings("deprecation")
private static String getFilePath(HttpServletRequest request){
String filePath =request.getRealPath("/");//匯出excel路徑
return filePath;
}
private static String getFileName(String filename){
String rs = filename + "_" + getCurrDate()+ ".xls"; // 檔案 加上時間戳,以防檔名重複
return rs;
}
// 獲取當前時間
private static String getCurrDate() {
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
df.setTimeZone(gc.getTimeZone());
return df.format(new java.util.Date());
}
private static void downLoad(String filePath,String filename,HttpServletResponse response,boolean isOnLine) throws Exception {
File f = new File(filePath+filename);// 獲取檔案 具體地址
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[12288];// 12M大小的陣列
int len = 0;
response.reset(); // 非常重要
if (isOnLine) { // 線上開啟方式
URL u = new URL("file:///" + filePath+filename);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition","inline; filename=" + f.getName());
} else { // 純下載方式
String ffname = new String(filename.getBytes(), "iso8859-1");
response.setContentType("application/vnd.ms-excel;charset=gbk");
response.setHeader("Location", ffname);
response.setHeader("Content-Disposition", "attachment; filename="+ ffname);
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
out.flush();
}
/**
* <p>Description: 匯出平臺商品Excel</p>
* @param response
* @param request
* @author wjt add
* @param ptsps
* @date 2018年7月24日
*/
public static void exportPtSpExcel(HttpServletResponse response, HttpServletRequest request, List<LptPtsp> ptsps) {
String filepath = getFilePath(request);
String fileName = getFileName("平臺商品統計資訊");
String[] title = new String[]{"序號","店鋪名稱","企業名稱","商品名稱","銷量","價格(元)","金額(元)","退貨數量","退款金額(元)","實際銷量","實際金額(元)","返現比例"};
//查詢結果list,封裝在Map裡 ,以便 匯出Excel公用
HashMap<String, String []> hashmap = new HashMap<String, String []>();
if (CheckUtils.listIsNotNull(ptsps)) {
for (LptPtsp ptsp : ptsps) {
String[] str = new String[]{ptsp.getDpmc(),ptsp.getQymc(),ptsp.getSpmc(),ptsp.getSl(),ptsp.getDj(),ptsp.getJe(),ptsp.getSpsl()
,ptsp.getTkje(),ptsp.getSjsl(),ptsp.getSjje(),ptsp.getJxsRate()};
hashmap.put(ptsp.getDpspid(), str);
}
}
//執行匯出
CreateExcel(filepath,fileName,title,hashmap,response);
}
}
相關推薦
Demo系列一之 Form表單下載Excel檔案
效果圖區: 程式碼區: 前端程式碼,只提供點選事件中的內容; //"匯出Execl"按鈕點選事件 $("#export").click(function(){ var form = $
跟KingDZ學HTML5之十一 HTML5 Form 表單新元素
rmi 出現 第一個 blog inpu tput form itl scrip 新的課程又開始,哈哈,最近的文章更新比較快,希望大家跟上俺的步伐啊,呵呵,但是每當看到閱讀量,哎,還真不多,可是俺還要堅持寫下去,不知道,大家是不是都沒有在研究HTML5呢? 這節課程,講的是
react+antd系列之Form表單(2):格式限制驗證
格式限制 antd中表單的功能很多,下面就為大家整理了一下antd中常用的幾種表單輸入格式驗證: 1. 輸入框不能為空限制,如下: {getFieldDecorator('name', { rules: [{ require
react+antd系列之Form表單(1):新增與刪除
在用antd的時候,我們如果要對錶單進行新增和刪除該怎麼弄呢,如下: import { connect } from 'dva'; import { Form, Input, Button } from 'antd'; import styles from './eg1.css';
知識總結之form表單屬性及H5新增特性
bsp ron mit 驗證 pick -s value 地址欄 屬性 一、form的幾大屬性 1.method屬性 規定用於發送 form-data 的 HTTP 方法,即請求的方式;主要用來提交參數與後臺數據進行交互。 分為GET和POST兩種方式,
初學servlet之form表單
exce cat eth col country values nts author ons 使用doget向頁面寫表單,使用dopost讀取表單內容,包括了單選按鈕,復選框,下拉列表等等的讀取方法,form的action屬性不寫,默認表單會被提交給請求他時用的相同的URL
Django框架 之 Form表單和Ajax上傳文件
不可 _for render ren files AS AD 什麽 OS 瀏覽目錄 Form表單上傳文件 Ajax上傳文件 偽造Ajax上傳文件 Form表單上傳文件 html <h3>form表單上傳文件&
71、Django之form表單
protoc valid init title except Go doc 列表 ima Form介紹 我們之前在HTML頁面中利用form表單向後端提交數據時,都會寫一些獲取用戶輸入的標簽並且用form標簽把它們包起來。 與此同時我們在好多場景下都需要對用戶的輸入做校驗
Django之form表單那點事
bootstrap msg 價格 code cap 愛好 ots exce 同時 Form介紹 我們之前在HTML頁面中利用form表單向後端提交數據時,都會寫一些獲取用戶輸入的標簽並且用form標簽把它們包起來。 與此同時我們在好多場景下都需要對用戶的輸入做校驗,比
Django 之 form表單
its html rom ida cal 從數據 disable ger orm Django中的Form表單 1、背景 平時我們在書寫form表單時,經常都是手動的去寫一些input標簽,讓用戶輸入一些功能,進行一些校驗的判斷,等等。Django中的for
Django之form表單
所有 install rip mod 由於 合格 NPU enc 多選框 Form介紹 總結,form組件的主要功能如下: 生成頁面可用的HTML標簽 對用戶提交的數據進行校驗 保留上次輸入內容 提示錯誤信息 普通方式手寫註冊功能 views.
Django之form表單詳解
構建一個表單 假設你想在你的網站上建立一個簡單的表單,以獲得使用者的名字。你需要類似這樣的模板: <form action="/your-name/" method="post"> <label for="your_name">Your name: </labe
Django元件之Form表單
一、Django中的Form表單介紹 我們之前在HTML頁面中利用form表單向後端提交資料時,都會寫一些獲取使用者輸入的標籤並且用form標籤把它們包起來。 與此同時我們在好多場景下都需要對使用者的輸入做校驗,比如校驗使用者是否輸入,輸入的長度和格式等正不正確。如果使用者輸入的內容有錯誤就需要
Jquery之Form表單儲存位元組流圖片
最終效果,點選文字框後彈出檔案瀏覽框,選擇圖片檔案(會驗證),上傳伺服器成功(這裡用的MongoDB)後會返回一個路徑值,自動填入文字框中 部分JSP頁面 <form id="companyForm" method="post"> <input i
Django基礎之form表單的補充進階
1. 應用Bootstrap樣式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" conte
form表單中的檔案上傳下載
檔案上傳: 1-問題:getParameter()不能使用 1-返回值:string 2-解決:使用第三方上傳元件來完成 fileupload 3-步驟: 1-前端:form 1-file域 2-mehtod=po
隱藏form表單下載檔案
下載檔案操作 java contorller程式碼 @RequestMapping ("/downloadZIPFile") @ResponseBody public void dow
Jquery UI Dialog 之 Form 表單提交
我專注的是Dialog的Form表單提交的問題。 不知道大家使用Dialog的方式是什麼,我就說說我用的方式吧。 <divid="dialog"> <formid="dialogForm"method="post"action="
JSP Servlet之 form表單 與Servlet之間的引數傳送
JSP Servlet之 form表單 與Servlet之間的引數傳送 //index.html <html> <head> <title>welcome</title> </head
使用form表單上傳檔案(一)
今天在專案中要寫一個上傳檔案的功能,使用jsp中的form表單的形式完成。 首先新建一個jsp,使用最原始的form表單來完成。 jsp中的程式碼如下,很簡單: <form method="post" action="<%=ermDomainUrl %>