您的位置:首页 > 编程语言 > PHP开发

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: