有時咱們的需求總會出現一些本身以爲很奇怪的需求,php
但若是效果出來了,又以爲很新穎,而後這些新穎的html
東西,就是這些奇怪的需求而來的,因此別對本身不能前端
的事情以爲不該該有,而是挑戰它,用本身所懂得語言jquery
完成它。ajax
xls格式的文件在頁面展現就是一個感受就是前端沒法實現的活,但json
卻能夠實現,只是它須要後臺幫忙轉換,應該數據流在前端沒法被轉換數據結構
成咱們所需的數據結構。app
php:post
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/London'); define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); /*上傳*/ //文件存放的路徑 $save_path = "./upload/"; //文件存放的文件夾 $save_files = geturl(); //PHP_OS 系統 getcwd() 獲取當前工做目錄 // function geturl() { $arr=array(); $year = date('Y'); $month= date('m'); $day= date('d'); $str = $year.$month.$day; if(strtoupper(substr(PHP_OS,0,3))=='WIN'){ $path = getcwd() . "/upload/".$str; }else{ $path = "/mnt/erp/".$str; } if(!file_exists($path))//判斷文件夾是否存在 { mkdir($path,0777,true); } array_push($arr,$str."/"); array_push($arr,$path."/"); return $arr; } $file_name = $save_files[1].$_FILES["file"]["name"];//獲取上傳文件的地址名稱 $file_path=$save_path.$save_files[0].$_FILES["file"]["name"]; if(!@move_uploaded_file($_FILES["file"]["tmp_name"],$file_name)){ echo "error|上傳文件錯誤."; exit(0); } include_once('.\PHPExcel-1.8\classes\PHPExcel.php'); include_once('.\PHPExcel-1.8\classes\PHPExcel\IOFactory.php'); include_once('.\PHPExcel-1.8\classes\PHPExcel\Cell.php'); /*echo date('H:i:s') , " Create new PHPExcel object" , EOL;*/ $objReader = PHPExcel_IOFactory::createReader('excel2007');//創建reader對象 $objPHPExcel = $objReader->load($file_path); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestDataRow(); // 取得總行數 $highestColumn_num = PHPExcel_Cell::columnIndexFromString($sheet->getHighestDataColumn());//列數 //$columns = (new PHPExcel_Cell())->getColumn($highestColumn_num); $allColumns = array('A','B','C','D','E','F','G'); $columns = array(); for($i =0;$i < $highestColumn_num;$i++){ $columns[$i]=$allColumns[$i]; } $arr_result = array(); $dealer_element = array(); for ($j = 1; $j <= $highestRow; $j++) { for ($k = 0; $k < count($columns); $k++) { //讀取單元格 $value = $objPHPExcel->getActiveSheet()->getCell($columns[$k] . $j)->getValue();//這個就是獲取每一個單元格的值 $value = trim($value); if (empty($value)) { $value = NULL; } $dealer_element[$k] = $value; //這裏能夠根據要求,作一些數據的驗證 } array_push($arr_result,$dealer_element); } echo json_encode($arr_result);
html,js:url
<html> <body> <form name="form" id="form"> <input type="file" name="file" id="file" /> <input type="button" id="submit" value="Submit" /> </form> <div id="div"></div> <script src="./jquery.js"></script> <script> var oSubmit=$("#submit"),oFile=$("#file"); var form=document.forms.form; oSubmit.click(function(){ /*由於jquery的ajax對FormData轉換成表單數據會拒絕 錯誤代碼:illegal invocation 因此須要設置參數 contentType:false, cache: false, processData:false, */ var formData=new FormData($("#form")[0]); $.ajax({ url:"./index.php", type:"post", contentType:false, cache: false, processData:false, data:formData, success:function(rps){ console.log(rps); tableHtml(JSON.parse(rps)); } }); return false; }); function tableHtml(objArr){ var oTable=$("<table border='1'>"); var oTr,oTd; for(var i=0;i<objArr.length;i++){ oTr=$("<tr>"); for(var j=0;j<objArr[i].length;j++){ oTd=$("<td>").html(objArr[i][j]?objArr[i][j]:""); oTr.append(oTd); } oTable.append(oTr); } $("#div").append(oTable); } </script> </body> </html>
jquery-ajax:問題