Magento使用phpexcel导出 商品订单 /订单条目表sales_flat_order_item
2015-06-09 13:54
726 查看
<?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);
相关文章推荐
- php self
- php中文匹配
- phpcms v9 常用调用标签(全)
- php使用for语句输出三角形的方法
- ZH奶酪:PHP安装扩展imagick
- yii2如何优化URL的路径
- yii2文件上传
- Yii2中的Ajax,异步更新表单
- PHP中会话处理函数的逻辑流程
- [php] Thinkphp 联表查询
- Yii 添加自己的搜索条件
- PHP不显示报错了怎么办~
- PHP长整型在32位系统中强制转化溢出
- ubuntu: 缺少 mcrypt 扩展,请检查 php 配置
- PHP 缓存之客户端缓存
- 解决Win7下运行php Composer出现SSL报错的问题
- php生成图片验证码
- ftp上传错误
- Yii2—控制器(Controller)
- Yii2—视图(View)