ajax读取文件数据并写入数据库

<html>
  <head>
    <title>导入观众数据</title>
    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
    <script language="Javascript">
    	function importDate() {
    		var filename = $("#attachfile").val();
    		if(!(filename.indexOf(".xls") > -1 || filename.indexOf(".xlsx") > -1)) {
    			alert("请选择正确的Excel格式文件");
    		}else {
    			$("#uploadForm").submit();
    		}
    	}
    	function callback(msg)
		{
			document.getElementById("msg").innerHTML = "进度:" + msg;
		}
    </script>
  </head>
  <body>
		     <form name="uploadForm" id="uploadForm" method="POST"  action="<%=path %>/servlet/VisitorServlet?op=importExcel" enctype="multipart/form-data" target="hidden_frame">
		           <table border="0" cellspacing="0" cellpadding="0" class="edit-table">
		               <thead>
		                 <tr>
		                   <th colspan="2"><img src="../../Images/photo_album.png" >导入数据</th>
		                 </tr>
		               </thead>
		               <tbody>
		                 <tr>
							<th width="20%"><span></span>数据文件:</th>
							<td width="30%"><input type="file" name="attachfile" id="attachfile" size="30"/></td>
						</tr>
						<tr>
							<td colspan="2">
								<span id="msg">进度:</span>
							</td>
						</tr>
	                  </tbody>
		          </table>
		          <iframe name="hidden_frame" id="hidden_frame" style="display:none"></iframe>
		       </form>   
	 	<input type="button" class="shop-btn1"  value="导入" onclick="javascript:importDate();"/>
		<input type="button" class="shop-btn1" value="关闭窗口"  onClick='javascript:window.open("","_self");window.close();'/>
</body>
</html>

说明:建一个隐藏的iframe,在form的target=“隐藏iframe的id”

servlet逻辑:
ServletInputStream is = request.getInputStream();
			/*过滤HTTPHeader,否则jxl会报无法识别文件结尾的错误*/    
			byte[] junk = new byte[1024]; 
			
			for(int i = 0; i < 4; i++)     
			{     
				is.readLine(junk, 0,junk.length);
			}
			int result = vm.importExcelDateNew(is, out);
			if(result != -1 && result == -2) {
				out.println("<script language='Javascript'> ");
				out.println(" alert('导入观众数据成功!');");
				out.println(" top.callback('导入成功');");
				out.println(" top.window.close();");
				out.println(" window.close();");
				out.println("</script>");
			}else {
				out.println("<script language='Javascript'> ");
				out.println(" alert('导入第"+ result +"条数据时出现异常!');");
				out.println(" top.callback('导入失败');");
				out.println("</script>");
			}


public int importExcelDateNew(InputStream in, PrintWriter out) throws IOException {

		Workbook book; // 声明一个空的工作对象
		int result = 0;
		VisitorDB vb = new VisitorDB();
		try {
			book = Workbook.getWorkbook(in); // 使工作薄对象得到一个execl
			Sheet se = book.getSheet(0); // 得到Excel第一个sheet
			System.out.println("*********开始从导入观众数据*********");
			result = vb.importExcelDate(se, out);
			System.out.println("*********导入观众数据结束***********");
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
		return result;
	}


导入过程回调jsp页面的方法即可查看当前进度

猜你喜欢

转载自vista-move.iteye.com/blog/1866426
今日推荐