1. 程式人生 > >利用ajaxSubmit無重新整理非同步上傳匯入Excel,無重新整理提交表單

利用ajaxSubmit無重新整理非同步上傳匯入Excel,無重新整理提交表單

前臺頁面程式碼:

<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery.form.js"></script>
<form method="post" enctype="multipart/form-data" action="ImportExcel_DuiZhang.jsp" id="formImport">
	    <table width="100%" cellpadding="5px" id="diaTable" style="display:none;">
	        <tr>
	        	<td>
	        		<input type="file" name="uploadFile" id="uploadFile" style="width:290px" />
	        	</td>
	        </tr>
	        <tr>
	            <td style="text-align:center;padding-top:10px;">
	                <a href="javascript:submitImport()" id="btnOK">確定</a>
	
	            </td>
	        </tr>
	    </table>
    </form>

<script>  
    function submitImport(){  
      var epath = $('#uploadFile').val();  
          
        if(epath==""){  
            alert( '匯入檔案不能為空!');  
            return;  
        }  
          
        if(epath.substring(epath.lastIndexOf(".") + 1).toLowerCase()=="xlsx"){  
            alert( '03以上版本Excel匯入暫不支援!');  
            return;  
        }  
        if (epath.substring(epath.lastIndexOf(".") + 1).toLowerCase()!="xls") {  
            alert( '匯入檔案型別必須為excel!');  
            return;  
        }  
        $('#btnOK').linkbutton('disable');  
        $("#formImport").ajaxSubmit({   
            type: "post",    
            dataType: "script",  // 'xml', 'script', or 'json' (expected server response type)   
            url: "ImportExcel_DuiZhang.jsp",  
            success: function (data1) {  
                $('#btnOK').linkbutton('enable');  
                if(data1.replace(/\s+/g,"")=="1"){  
                    alert('匯入成功');  
                    location.reload();  
                }else{  
                    alert(data1);  
                }  
            },  
            error: function (msg) {  
                $('#btnOK').linkbutton('enable');  
                alert("檔案上傳失敗");      
            }  
        });  
  }  
</script> 

ajaxSubmit 部分引數說明

dataType:期望返回的資料型別。null、“xml”、“script”或者“json”其中之一。dataType提供一種方法,它規定了怎樣處理伺服器的響應。這個被直接地反映到jQuery.httpData方法中去。
下面的值被支援:
'xml':如果dataType == 'xml',將把伺服器響應作為XML來對待。同時,如果“success”回撥方法被指定, 將傳回responseXML值。
'json':如果dataType == 'json', 伺服器響應將被求值,並傳遞到“success”回撥方法,如果它被指定的話。 

'script':如果dataType == 'script', 伺服器響應將求值成純文字。

後臺處理程式碼

<%@ page import="java.util.*" %>
<%@ page import="jxl.*"%>
<%@ page import="jxl.write.*"%>
<%@ page import="java.io.*"%>
<%@ page import="org.apache.commons.fileupload.RequestContext"%>
<%@ page import="org.apache.commons.fileupload.servlet.ServletRequestContext"%>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page import="org.apache.commons.fileupload.FileItem"%>
try{
	response.setContentType("text/html");
	request.setCharacterEncoding("utf-8");
	// 宣告檔案域
	FileItem fileItem = null;
	// 從 HTTP servlet 獲取 fileupload 元件需要的內容
	RequestContext requestContext = new ServletRequestContext(request);
	// 判斷是否包含 multipart 內容,如果不包含,則不進行任何處理。
	if (ServletFileUpload.isMultipartContent(requestContext)) 
	{
		// 建立基於磁碟的檔案工廠
		DiskFileItemFactory factory = new DiskFileItemFactory();
		// 設定直接儲存檔案的極限大小,一旦超過則寫入臨時檔案以節約記憶體。預設為 1024 位元組
		factory.setSizeThreshold(1024 * 1024);
		factory.setRepository(new File(request.getSession().getServletContext().getRealPath("\\")));
		
		// 建立上傳處理器,可以處理從單個 HTML 上傳的多個上傳檔案。
		ServletFileUpload upload = new ServletFileUpload(factory);
		// 最大允許上傳的檔案大小
		upload.setSizeMax(10 * 1024 * 1024);
		
		try {
			// 處理上傳
			List items = upload.parseRequest(requestContext);

			// 由於提交了表單欄位資訊,需要進行迴圈區分。
			for (int i = 0; i < items.size(); i++) {
				FileItem fi = (FileItem) items.get(i);
				// 如果不是表單內容,取出 multipart。
				if (!fi.isFormField()) {
					fileItem = fi;
					// 一次只上傳單個檔案
					break;
				}
			}

			Workbook workbook = null;
			Cell header = null;
			Cell cell = null;
			String currentColumn = "";
			
			InputStream uploadedStream = fileItem.getInputStream();
			workbook = Workbook.getWorkbook(uploadedStream);
			Sheet sheet = workbook.getSheet(0);
			
			//返回去掉空行的記錄數
			int nullCellNum;//統計空格數
			int row = sheet.getRows();
			int column = sheet.getColumns();
			int actualRows = row;
			for (int m = 0; m < row; m++) { //統計行中為空的單元格數
			   nullCellNum = 0;
			    for (int n = 0; n < column; n++) {
			        String val = sheet.getCell(n, m).getContents();
			        val = StringUtils.trimToEmpty(val);
			        if (StringUtils.isBlank(val))
			           nullCellNum++;
			    }
			    if (nullCellNum >= column) { //如果nullCellNum大於或等於總的列數
			    	actualRows--;          //行數減一
			   }
			}
			
			String dzTitle=sheet.getCell(1, 1).getContents().trim();
			String lifnr=sheet.getCell(1, 2).getContents().trim();
			//補0
			try{
				lifnr="0000"+Integer.parseInt(lifnr);
			}catch(Exception ep1){
				
			}
			
			if(null==dzTitle||"".equals(dzTitle)){
				out.print("對賬單標題為空");
			}else if(null==lifnr||"".equals(lifnr)){
				out.print("物流商編碼為空");
			}else{
				//一系列處理過程......
				out.print("1");
			}
		}
		catch (Exception ex) {
			out.print("Exception2:"+ex.getMessage());
		}
	}
	else{
		out.print("讀取檔案失敗");
	}

}catch (Exception ex) {
	out.print("Exception3:"+ex.getMessage());
}


相關推薦

利用ajaxSubmit重新整理非同步匯入Excel重新整理提交

前臺頁面程式碼: <script type="text/javascript" src="/js/jquery.js"></script> <script type="text/javascript" src="/js/jquery.fo

nodejs 處理檔案時獲取不到資料

from表單上傳檔案時,為保證檔案正確的編碼格式,我們會為form設定 enctype="multipart/form-data" 屬性,但此時我們又不能獲取到input傳遞的值。 表單中enctyp

from實現跳轉文件接收頁面後臺數據

spl white lis not left alt tro pos ftp   實現無跳轉發送表單數據、文件,並能接收後臺返回的數據。   主要技術要點:   1、form表單添加target屬性,指定一個iframme的name;form表單提交後在iframe內嵌窗口

Java實現從網頁匯入excel資料到資料庫

       一晃已經是十月份的最後一天了,時間過得很快...        專案中通過excel往資料庫批量匯入的功能頗為常見,所以今天整理出來一份簡單的例子,為了以後方便使用,同時也為大家實現功能作為一個參考

jquery form外掛 /匯入excel-ajax驗證

jquery-1.8.2.min.js  jquery.form-3.26.0.js  jquery.validate.min-1.7.js  bootstrap-v2.2.2  bootstrap.file-input.js  上傳檔案樣式和外掛使用: bootstrap + bootstrap.file

ajax非同步檔案以及匯入excle檔案到資料庫

html程式碼: <div class="sc_btn_box"> <input type="file" class="sc_btn" id="file"> <span class="file_uploader">選擇</span>

thinkPHP利用ajax非同步圖片並顯示、刪除

近來學習tp5的過程中,專案中有個發帖功能,選擇主題圖片。如下: 利用原始的檔案上傳處理,雖然通過原始js語句能實時顯示上傳圖片,但是這樣的話會涉及很多相容問題。使用ajax技術,實現選擇性刪除所選圖片功能,並不會有相容問題。 表單檔案form: &lt;form method="po

【前端】利用ajax實現偽檔案非同步下載

利用ajax可以實現很酷的效果,在不重新整理頁面的情況下提交表單、修改資料狀態等等,可是如果表單裡還有input:file可就慘了,ajax不支援檔案的處理啊! ajax是使用了瀏覽器內部的XmlHttpRequest物件來傳輸XML資料的。既然是Xml的資料傳輸,那麼傳輸

利用formdata非同步圖片並預覽圖片

<img src="" style="width: 120px;margin-bottom: 5px" id="previewimg0"> <form action="" enctype="multipart/form-data" id="form0"> <input

jquery+ajax+servlet實現重新整理圖片

需要藉助ajaxfileupload.js來實現ajax圖片上傳功能。 html部分: <body>       <input id="img" type="file" name="img">//id和name屬性必須都有且同名。。。       <input type="but

非同步圖片-ajaxSubmit提交

非同步上傳是一個很蛋疼的問題,今天就來說說非同步上傳的故事 第一步 引入ajaxSubmit這個js外掛 <!--非同步提交圖片--> <script src="__PUBLIC__/js/jquery.ajaxSubmit.js">&l

AjaxUpLoad.js實現重新整理檔案

string newFileName = nowTime.Year.ToString() + nowTime.Month.ToString() + nowTime.Day.ToString() + nowTime.Hour.ToString() + nowTime.Minute.ToString() + no

asp.net ajax 和 asp.net 2.0中的fileupload合力打造重新整理檔案控制元件

{20        bool fileOK =false;21        //獲取根檔案絕對路徑22string path = Server.MapPath("~/UpLoad/");23        //如上傳了檔案,就判斷檔案格式24        FileUpload FU = FileUplo

jQuery + ajax + ashx實現重新整理檔案

主要分享的是jQuery + ajax的資料提交技巧,至於是不是.NET框架關係不大,大家可以用自己所用的框架處理上傳操作。 前臺介面程式碼: <form id="form1" action="#" runat="server" enctype="multipart

使用ajaxSubmit非同步圖片並展示

頁面在選擇圖片完成後將圖片上傳到圖片伺服器,並在頁面顯示圖片,然後將上傳圖片的路徑載入到隱藏域中,提交表單時將路徑儲存到資料庫。 頁面程式碼: <script> function sub

SpringMVC結合ajaxfileupload.js實現ajax重新整理檔案

一、spring mvc配置 1、web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xm

PHP Ajax JavaScript 實現 重新整理附件

普通表單 前端頁面 後臺處理 帶有檔案的表單 重新整理方式 前端介面 後臺頁面 無重新整理方式 總結 對一個網站而言,有一個基本的不可缺少的功能,那就是檔案上傳。使用PHP預壓來實現檔案上傳可謂是有得天獨厚的優勢的,那麼今天,就

[asp.net] ajax重新整理檔案與FormData使用介紹

前端主要進行瀏覽器類別判斷,如果是chrome瀏覽器,就使用ajax檔案上傳方式,如果時ie或者其他瀏覽器,就採用傳統的表單上傳檔案。通常我們提交表單時,會將form中的所有表單元素的name和value組成一個queryString,這就是為什麼表單元素可以沒有Id但是不能

ajax+php重新整理檔案(ajaxuploadfile)

檔案上傳的表單格式 <form id="uploadform" enctype="multipart/form-data" name="uploadform" method="post" > <input id="fileT

jquery 刷新的小function

hidden eth 錯誤提示 control isp read document label move function zll_up(click_id,up_url,text_id,show_id){ this.create = function(){}