首頁 >後端開發 >php教程 >PHP寫了個批次Excel導入出貨,記錄下

PHP寫了個批次Excel導入出貨,記錄下

不言
不言原創
2018-04-16 11:16:332030瀏覽

這篇文章介紹的內容是關於PHP寫了個批量Excel導入發貨,記錄下,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

function upExecel(){
        include 'data/extend/phpexcel_classes/PHPExcel.php';
        //判断是否选择了要上传的表格
        if (empty($_POST['myfile'])) {
            echo "<script>alert(您未选择表格);history.go(-1);</script>";
        }
        //获取表格的大小,限制上传表格的大小5M
        $file_size = $_FILES[&#39;myfile&#39;][&#39;size&#39;];
        if ($file_size>5*1024*1024) {
            echo "<script>alert(&#39;上传失败,上传的表格不能超过5M的大小&#39;);history.go(-1);</script>";
            exit();
        }
        //限制上传表格类型
        $file_name = $_FILES[&#39;myfile&#39;][&#39;name&#39;];
            //application/vnd.ms-excel  为xls文件类型
        $extension = strtolower( pathinfo($file_name, PATHINFO_EXTENSION) );

        //判断表格是否上传成功
        if (is_uploaded_file($_FILES[&#39;myfile&#39;][&#39;tmp_name&#39;])) {

            //接收存在缓存中的excel表格
            $filename = $_FILES[&#39;myfile&#39;][&#39;tmp_name&#39;];
            if ($extension ==&#39;xlsx&#39;) {
                $objReader = \PHPExcel_IOFactory::createReader(&#39;Excel2007&#39;);//use excel2007 for 2007 format
                $objPHPExcel = $objReader ->load($filename);
            } else if ($extension ==&#39;xls&#39;) {
                $objReader = \PHPExcel_IOFactory::createReader(&#39;Excel5&#39;);//use excel2007 for 2007 format
                $objPHPExcel = $objReader ->load($filename);
            }
            //$objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格
            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow(); // 取得总行数
            // $highestColumn = $sheet->getHighestColumn(); // 取得总列数
            //循环读取excel表格,读取一条,插入一条
            //j表示从哪一行开始读取  从第二行开始读取,因为第一行是标题不保存
            /*if ($shipping_type == 1) {
                $res = $order_service->orderDelivery($order_id, $order_goods_id_array, $express_name, $shipping_type, $express_company_id, $express_no,$suppliercode);*/
            $order_service = new OrderService();
            $express = new NsOrderExpressCompanyModel();
            $num = 0;
            for($j=2;$j<=$highestRow;$j++)
            {
                $a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//order_id
                $b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//order_goods_id
                $c = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();//express_name
                $d = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();//express_no

                $express_id = $express->where(&#39;company_name&#39;,$c)->value(&#39;co_id&#39;);
                if(!$express_id || !is_numeric($d)){
                    echo "<script>alert(&#39;第".$j."行快递公司名称或单号不正确&#39;);window.location.href=&#39;/admin/spell/countspellgroup&#39;;</script>";
                    break;
                }
                $res = $order_service->orderDelivery($a, $b, $c, 1, $express_id,$d,&#39;&#39;);
                // exit();
                Db::execute("insert into ns_wxmsg_spellgroup(orderid,msgtype,addtime,senttime,status) (select order_id,&#39;10&#39;,".time().",0,&#39;&#39; from ns_spellgroup where pay_time>0 and order_id=".$a.")");
                $num++;
            }
            if ($num) {
                echo "<script>alert($num.&#39;行数据添加成功!&#39;);window.location.href=&#39;/admin/spell/countspellgroup&#39;;</script>";
            }
        }
    }


剛開始寫PHP,有很多不足的地方,請多多指正,本來想寫個事務,暫時沒弄好,就這樣先用了,後續在優化

相關推薦:

用php寫註冊介面

PHP寫時複製詳解

#

以上是PHP寫了個批次Excel導入出貨,記錄下的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn