最新消息: 新版网站上线了!!!

ecshop订单批量导出到excel表方法

 

ecshop订单批量导出是通过PHPExcel类实现方法,效果见上图: 

第一步,将PHPExcel类包解压到后台根目录下。 

第二步,页面上部署操作按钮:打开admin/templates/order_list.htm文件,在打印订单按钮后面(约第73行)加上

 

 
<input name="export" type="submit" id="btnSubmit5" value="导出到Excel" class="button" disabled="true" onclick="this.form.target = '_blank'" />

第三步,部署代码:打开admin/order.php文件,在适当位置加上如下代码,(代码就不再一行行解析了,都有注释)

 
/* 批量导出订单 */
elseif (isset($_POST['export'])) {
        if (empty($_POST['order_id'])) {
            sys_msg($_LANG['pls_select_order']);
        }
  
        /* 赋值公用信息 */
        $smarty->assign('shop_name'$_CFG['shop_name']);
        $smarty->assign('shop_url'$ecs->url());
        $smarty->assign('shop_address'$_CFG['shop_address']);
        $smarty->assign('service_phone'$_CFG['service_phone']);
        $smarty->assign('print_time', local_date($_CFG['time_format']));
        $smarty->assign('action_user'$_SESSION['admin_name']);
  
        $html          '';
        $order_sn_list explode(','$_POST['order_id']);
        //////////////////////////
  
        error_reporting(E_ALL);
  
        date_default_timezone_set('Europe/London');
  
        require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
  
        echo date('H:i:s') . " Create new PHPExcel object\n";
        $objPHPExcel new PHPExcel();
  
        echo date('H:i:s') . " Set properties\n";
        $objPHPExcel->getProperties()->setCreator("wdz")->setLastModifiedBy("wdz")->setTitle("我的订单")->setSubject("我的订单")->setDescription(date('Y/m/d H:i:s') . "导出的订单")->setKeywords("我的订单")->setCategory("Test result file");
  
        /*设置标题属性*/
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ///////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(40);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ///////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(10);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(10);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('G1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('G1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(10);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('H1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('H1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(10);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('I1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('I1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(40);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('J1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('J1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(15);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('J1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('J1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('K1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('K1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(15);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('K1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('K1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
        //字体大小
        $objPHPExcel->getActiveSheet()->getStyle('L1')->getFont()->setSize(16);
        //加粗
        $objPHPExcel->getActiveSheet()->getStyle('L1')->getFont()->setBold(true);
        //表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(15);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('L1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //水平居中
        $objPHPExcel->getActiveSheet()->getStyle('L1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        ////////////////////
  
        echo date('H:i:s') . " Add some data\n";
        $objPHPExcel->setActiveSheetIndex(0);
        $objPHPExcel->getActiveSheet()->setCellValue('A1''订货日期');
        $objPHPExcel->getActiveSheet()->setCellValue('B1''款号');
        $objPHPExcel->getActiveSheet()->setCellValue('C1''商品名称');
        $objPHPExcel->getActiveSheet()->setCellValue('D1''属性');
        $objPHPExcel->getActiveSheet()->setCellValue('E1''数量');
        $objPHPExcel->getActiveSheet()->setCellValue('F1''价格');
        $objPHPExcel->getActiveSheet()->setCellValue('G1''收件人');
        $objPHPExcel->getActiveSheet()->setCellValue('H1''地址');
        $objPHPExcel->getActiveSheet()->setCellValue('I1''电话');
        $objPHPExcel->getActiveSheet()->setCellValue('J1''邮箱');
        $objPHPExcel->getActiveSheet()->setCellValue('K1''发货日期');
  
        $hang = 2;
        ///////////////////////
        foreach ($order_sn_list as $order_sn) {
            /* 取得订单信息 */
            $order = order_info(0, $order_sn);
            if (empty($order)) {
                continue;
            }
  
            /* 根据订单是否完成检查权限 */
            if (order_finished($order)) {
                if (!admin_priv('order_view_finished''', false)) {
                    continue;
                }
            else {
                if (!admin_priv('order_view''', false)) {
                    continue;
                }
            }
  
            /* 如果管理员属于某个办事处,检查该订单是否也属于这个办事处 */
            $sql       "SELECT agency_id FROM " $ecs->table('admin_user') . " WHERE user_id = '$_SESSION[admin_id]'";
            $agency_id $db->getOne($sql);
            if ($agency_id > 0) {
                if ($order['agency_id'] != $agency_id) {
                    continue;
                }
            }
  
            /* 取得用户名 */
            if ($order['user_id'] > 0) {
                $user = user_info($order['user_id']);
                if (!empty($user)) {
                    $order['user_name'] = $user['user_name'];
  
                }
            }
  
            /* 取得区域名 */
            $sql             "SELECT concat(IFNULL(c.region_name, ''), '  ', IFNULL(p.region_name, ''), " "'  ', IFNULL(t.region_name, ''), '  ', IFNULL(d.region_name, '')) AS region " "FROM " $ecs->table('order_info') . " AS o " "LEFT JOIN " $ecs->table('region') . " AS c ON o.country = c.region_id " "LEFT JOIN " $ecs->table('region') . " AS p ON o.province = p.region_id " "LEFT JOIN " $ecs->table('region') . " AS t ON o.city = t.region_id " "LEFT JOIN " $ecs->table('region') . " AS d ON o.district = d.region_id " "WHERE o.order_id = '$order[order_id]'";
            $order['region'] = $db->getOne($sql);
  
            /* 其他处理 */
            $order['order_time']    = local_date($_CFG['time_format'], $order['add_time']);
            $order['pay_time']      = $order['pay_time'] > 0 ? local_date($_CFG['time_format'], $order['pay_time']) : $_LANG['ps'][PS_UNPAYED];
            $order['shipping_time'] = $order['shipping_time'] > 0 ? local_date($_CFG['time_format'], $order['shipping_time']) : $_LANG['ss'][SS_UNSHIPPED];
            $order['status']        = $_LANG['os'][$order['order_status']] . ',' $_LANG['ps'][$order['pay_status']] . ',' $_LANG['ss'][$order['shipping_status']];
            $order['invoice_no']    = $order['shipping_status'] == SS_UNSHIPPED || $order['shipping_status'] == SS_PREPARING ? $_LANG['ss'][SS_UNSHIPPED] : $order['invoice_no'];
  
            /* 此订单的发货备注(此订单的最后一条操作记录) */
            $sql                   "SELECT action_note FROM " $ecs->table('order_action') . " WHERE order_id = '$order[order_id]' AND shipping_status = 1 ORDER BY log_time DESC";
            $order['invoice_note'] = $db->getOne($sql);
  
            /* 参数赋值:订单 */
            $smarty->assign('order'$order);
            $shuliang = 0;
  
            /* 取得订单商品 */
            $goods_list array();
            $goods_attr array();
            $sql        "SELECT o.*, g.goods_number AS storage, o.goods_attr, IFNULL(b.brand_name, '') AS brand_name " "FROM " $ecs->table('order_goods') . " AS o " "LEFT JOIN " $ecs->table('goods') . " AS g ON o.goods_id = g.goods_id " "LEFT JOIN " $ecs->table('brand') ." AS b ON g.brand_id = b.brand_id " "WHERE o.order_id = '$order[order_id]' ";
            $res        $db->query($sql);
            $shuliang   = 0;
            $chanpin    $hang;
            while ($row $db->fetchRow($res)) {
                $shuliang $shuliang + 1;
                /* 虚拟商品支持 */
                if ($row['is_real'] == 0) {
                    /* 取得语言项 */
                    $filename = ROOT_PATH . 'plugins/' $row['extension_code'] . '/languages/common_' $_CFG['lang'] . '.php';
                    if (file_exists($filename)) {
                        include_once($filename);
                        if (!empty($_LANG[$row['extension_code'] . '_link'])) {
                            $row['goods_name'] = $row['goods_name'] . sprintf($_LANG[$row['extension_code'] . '_link'], $row['goods_id'], $order['order_sn']);
                        }
                    }
                }
  
                $objPHPExcel->getActiveSheet()->setCellValue('B' $chanpin$row['goods_sn']);
                $objPHPExcel->getActiveSheet()->setCellValue('C' $chanpin$row['goods_name']);
                $objPHPExcel->getActiveSheet()->setCellValue('D' $chanpin$row['goods_attr']);
                $objPHPExcel->getActiveSheet()->setCellValue('E' $chanpin$row['goods_number']);
                $objPHPExcel->getActiveSheet()->setCellValue('F' $chanpin$row['goods_price']);
  
                $row['formated_subtotal']    = price_format($row['goods_price'] * $row['goods_number']);
                $row['formated_goods_price'] = price_format($row['goods_price']);
  
                $goods_attr[] = explode(' ', trim($row['goods_attr'])); //将商品属性拆分为一个数组
                $goods_list[] = $row;
                $chanpin      $chanpin + 1;
            }
  
            $attr array();
            $arr  array();
            foreach ($goods_attr AS $index => $array_val) {
                foreach ($array_val AS $value) {
                    $arr            explode(':'$value); //以 : 号将属性拆开
                    $attr[$index][] = @array(
                        'name' => $arr[0],
                        'value' => $arr[1]
                    );
                }
            }
  
            $smarty->assign('goods_attr'$attr);
            $smarty->assign('goods_list'$goods_list);
  
            $smarty->template_dir = '../' . DATA_DIR;
            for ($kk $hang$kk < ($hang $shuliang); $kk++) {
                $objPHPExcel->getActiveSheet()->mergeCells('A' $hang ':A' $kk);
                $objPHPExcel->getActiveSheet()->mergeCells('H' $hang ':H' $kk);
                $objPHPExcel->getActiveSheet()->mergeCells('I' $hang ':I' $kk);
                $objPHPExcel->getActiveSheet()->mergeCells('J' $hang ':J' $kk);
                $objPHPExcel->getActiveSheet()->mergeCells('K' $hang ':K' $kk);
                $objPHPExcel->getActiveSheet()->mergeCells('G' $hang ':G' $kk);
                $objPHPExcel->getActiveSheet()->getStyle('A' $hang ':A' $kk)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('A' $hang ':A' $kk)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('H' $hang ':H' $kk)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('H' $hang ':H' $kk)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('I' $hang ':I' $kk)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('I' $hang ':I' $kk)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('J' $hang ':J' $kk)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('J' $hang ':J' $kk)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('K' $hang ':K' $kk)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('K' $hang ':K' $kk)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('G' $hang ':G' $kk)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('G' $hang ':G' $kk)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            }
            $objPHPExcel->getActiveSheet()->setCellValue('A' . ($hang), $order['order_time']);
            $objPHPExcel->getActiveSheet()->setCellValue('G' . ($hang), $order['consignee']);
            $objPHPExcel->getActiveSheet()->setCellValue('H' . ($hang), $order['address']);
            $objPHPExcel->getActiveSheet()->setCellValue('I' . ($hang), $order['tel']);
            $objPHPExcel->getActiveSheet()->setCellValue('J' . ($hang), $order['email']);
            $objPHPExcel->getActiveSheet()->setCellValue('K' . ($hang), $order['shipping_time']);
  
            $hang $hang $shuliang;
  
        }
  
        $objPHPExcel->getActiveSheet()->setTitle(("我的订单"));
        $objPHPExcel->setActiveSheetIndex(0);
  
        require_once 'Classes/PHPExcel/IOFactory.php';
  
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5');
        $objWriter->save(str_replace('.php''.xls'__FILE__));
  
         -->

转载请注明:谷谷点程序 » ecshop订单批量导出到excel表方法