Magento使用phpexcel匯出 商品訂單 /訂單條目表sales_flat_order_item
阿新 • • 發佈:2019-02-18
<?php /** * 匯出商品訂單(訂單條目表sales_flat_order_item) * @date 2015年6月9日 */ define('MAGENTO', realpath(dirname(__FILE__))); require_once MAGENTO . '/app/Mage.php'; umask(0); Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); //echo date('Y-m-d H:i:s',strtotime('2015-06-02') - 7*3600); //準備訂單的查詢條件 $order_status = isset($_GET['status']) ? $_GET['status'] :'Pending'; //訂單狀態 /*時間資料庫存的是格林威治時間,所以查詢時應該減去7個小時*/ $order_created = $_GET['created'] = '2015-06-08'; //訂單建立時間 $order_created = date('Y-m-d H:i:s',strtotime($_GET['created']) - 7*3600); //$order_payment = isset($_GET['payment']) ? $_GET['payment'] :'checkmo'; //訂單支付方式,checkmo:貨到付款 //1.查詢 /* 不同商品一條記錄 */ $sql = "SELECT order_table.increment_id,item_table.parent_item_id, item_table.created_at,item_table.sku,item_table.name,item_table.qty_ordered,item_table.original_price,item_table.price,item_table.row_total,item_table.row_weight, order_table.customer_email, CONCAT_WS('',order_table.customer_firstname,order_table.customer_middlename,order_table.customer_lastname) AS `BilltoName`, CONCAT_WS('',address_table.firstname,address_table.middlename,address_table.lastname) AS `ShiptoName`, CONCAT_WS(', ',address_table.street,address_table.city,address_table.region) AS `ShippingAddress`, address_table.city,region_table.code,address_table.postcode, address_table.telephone FROM sales_flat_order_item AS item_table LEFT JOIN sales_flat_order AS order_table ON order_table.entity_id=item_table.order_id LEFT JOIN sales_flat_order_address AS address_table ON address_table.parent_id=order_table.entity_id LEFT JOIN directory_country_region AS region_table ON region_table.default_name=`address_table`.region WHERE item_table.created_at >= '{$order_created}' AND address_table.address_type='shipping' and order_table.`status`='{$order_status}'"; $handle = Mage::getSingleton('core/resource')->getConnection('core_write'); $query = $handle->query($sql); $order_list = array(); while ($row = $query->fetch()) { /*parent_item_id如果存在,該記錄行價格就為0,這裡排除*/ if(!isset($row['parent_item_id'])){ $order_list[] = $row; } } /* *+---------------------------------------------------------------------- * PHPExcel匯出Excel表格 * array $rearr 需要匯出的陣列 *+---------------------------------------------------------------------- */ function export($rearr) { $result = array( '訂單編號', '時間', 'SKU', '商品名稱', '數量', '原價', '成交價', '總價', '付款人Email', '付款人名稱', '收貨人名稱', '收貨人地址', '收貨人城市', '州或省', '收貨郵編', '收貨人電話' ); $arr = array( 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'p' ); //匯入excel類 require_once MAGENTO . '/lib/PHPExcel/PHPExcel.php'; // 建立一個excel $objPHPExcel = new PHPExcel(); /****************************************設定居中開始**************************************/ foreach ($arr as $key => $value) { $objPHPExcel->getActiveSheet()->getStyle($value)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); } /****************************************設定居中結束**************************************/ // 迴圈$arr定義的列設定每列內容居中 $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")->setLastModifiedBy("Maarten Balliauw")->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")->setKeywords("office 2007 openxml php")->setCategory("Test result file"); /**************************************設定標題開始*****************************************/ // 迴圈$arr定義的列和$result設定表頭 $objPHPExcel->setActiveSheetIndex(0); foreach ($arr as $key => $value) { $objPHPExcel->getActiveSheet()->setCellValue($value . "1", $result[$key]); } /**************************************設定標題結束*****************************************/ /**************************************設定內容開始*****************************************/ $objPHPExcel->setActiveSheetIndex(0); $i = 2; // $rearr需要匯出的資料二維陣列 foreach ($rearr as $key => $value) { // 這裡從二維數組裡面通過鍵名獲取到值放到相應的表格中 $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $value['increment_id']); $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, date('Y-m-d H:i:s',strtotime($value['created_at']) - 7*3600)); $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $value['sku']); $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $value['name']); $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $value['qty_ordered']); $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $value['original_price']); $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $value['price']); $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $value['row_total']); $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $value['customer_email']); $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $value['BilltoName']); $objPHPExcel->getActiveSheet()->setCellValue('K' . $i, $value['ShiptoName']); $objPHPExcel->getActiveSheet()->setCellValue('L' . $i, $value['ShippingAddress']); $objPHPExcel->getActiveSheet()->setCellValue('M' . $i, $value['city']); $objPHPExcel->getActiveSheet()->setCellValue('N' . $i, $value['code']); $objPHPExcel->getActiveSheet()->setCellValue('O' . $i, $value['postcode']); $objPHPExcel->getActiveSheet()->setCellValue('P' . $i, $value['telephone']); $i++; } /**************************************設定內容結束*****************************************/ /**************************************設定寬度開始*****************************************/ // 迴圈$arr定義的列設定每列寬度 foreach ($arr as $key => $value) { if($value == 'D'){ $objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(70); }elseif($value == 'K'){ $objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(50); }else{ $objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20); } } /**************************************設定寬度結束*****************************************/ //匯出的檔名 $filename = 'orderItem-'.date('Y-m-d',time()).'.xls'; /**************************************設定匯出下載開始*****************************************/ $objPHPExcel->getSheet(0)->setTitle('phpexcel'); // 工作區域標題 header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename=$filename");//匯出檔案 header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output');//匯出檔案 /**************************************設定匯出下載結束*****************************************/ } //匯出 export($order_list);