Home  >  Article  >  Backend Development  >  PHP wrote a batch of Excel import shipments, recorded

PHP wrote a batch of Excel import shipments, recorded

不言
不言Original
2018-04-16 11:16:332023browse

The content of this article is about writing a batch Excel import and delivery in PHP. It is recorded and has a certain reference value. Now I share it with everyone. Friends in need can refer to it

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>";
            }
        }
    }


I just started writing PHP, and there are many shortcomings. Please correct me. I originally wanted to write a transaction, but I haven’t finished it yet, so I just used it first. I will optimize it later.

Related Recommended:

Use PHP to write the registration interface

Detailed explanation of PHP copy-on-write

The above is the detailed content of PHP wrote a batch of Excel import shipments, recorded. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn