phpExcel与jq的ajax

Posted 小数点就是问题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpExcel与jq的ajax相关的知识,希望对你有一定的参考价值。

有时我们的需求总会出现一些自己觉得很奇怪的需求,

但如果效果出来了,又觉得很新颖,然后这些新颖的

东西,就是这些奇怪的需求而来的,所以别对自己不能

的事情觉得不应该有,而是挑战它,用自己所懂得语言

完成它。

xls格式的文件在页面展示就是一个感觉就是前端无法实现的活,但

却可以实现,只是它需要后台帮忙转换,应该数据流在前端无法被转换

成我们所需的数据结构。

php:

<?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([email protected]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:

<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:问题

 

以上是关于phpExcel与jq的ajax的主要内容,如果未能解决你的问题,请参考以下文章

php代码片段: sendFile/videoStream/sendEmail/phpexcel/ffmpeg/zip

使用 AJAX 调用下载 PHPExcel 文件

PHPExcel与ajax结合进行文件下载

JQ Ajax 同步与异步的区别

原生Ajax 和Jq Ajax

JQ+AJAX实现多级联动