由于xml方式导出,不能显示图片,所以有时候需要excel的方式
excel写法:
function actionExport(){
1.查询需要导出的内容;
2.
include_once 'Lib/PhpExcel/PHPExcel.php'; 先引入phpexcel
$data = array();//显示数据
//创建一个读Excel模版的对象
$objReader = PHPExcel_IOFactory::createReader ( 'Excel5' );
//读取一个excel模版
$objPHPExcel = $objReader->load ("upload/template/ShChDan.xls" ); 放置好一个需要用的excel文档,最好是excel的,不要用wps的,否则会不兼容,报错
$objActSheet = $objPHPExcel->getActiveSheet ();
$objActSheet->setTitle ( '生产任务单' );//设置导出文档的标题
$title = '常州金坛康城机械制造有限公司';
$objActSheet->setCellValue ( 'A1',$title);
$objActSheet->setCellValue ( 'A5','生产任务单');//在单元格内放置需要的显示的内容
$i = 9;
对于子表的信息,需要遍历循环
foreach ($rowset as $key => &$v) {
if($i>9){
$objActSheet->insertNewRowBefore($i,1); //新增行
}
$objActSheet->setCellValue ( 'A'.$i, $v['huoCode'] );
//设置显示的图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
/*设置图片路径*/
$objDrawing->setPath('./'.$v['pics']);
/*设置图片高度*/
$objDrawing->setHeight(40);
/*设置图片要插入的单元格*/
$objDrawing->setCoordinates("B".$i);
/*设置图片所在单元格的格式*/
$objDrawing->setOffsetX(10);
$objDrawing->setOffsetY(1);
$objDrawing->setRotation(20);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(50);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$i++;
}
$filename = $planCode?$planCode:time (); //设置导出的文件名
ob_end_clean();//清除缓存 防止乱码
// header ('Content-Type: application/vnd.ms-excel');
header ("Content-Type: application/vnd.ms-excel; charset=UTF-8");//
header ('Content-Disposition: attachment;filename="' . $filename . '.xls"' );
header ('Cache-Control: max-age=0');//缓存
header("Content-Type:application/download");;
header("Content-Transfer-Encoding:binary");
$objWriter = PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' ); //在内存中准备一个excel2003文件
$objWriter->save ( 'php://output' );
exit;
}
xml的写法:
function actionViewExport(){
FLEA::loadClass('TMIS_Common');
$sql="SELECT x.*,y.id as sid,y.jiaoqi,z.color,y.cnt,y.unit,y.danjia,y.memo,z.proCode,z.proName,a.compName,
employName,z.chengfen,z.menfu,z.kezhong
from caigou_order x
left join caigou_order2product y on x.id=y.caigouId
left join jichu_product z on z.proCode=y.productId
left join jichu_supplier a on a.id=y.supplierId
left join jichu_employ e on e.id=x.employId
where 1 and x.id='{$_GET['id']}'";
$row=$this->_modelExample->findBySql($sql);
foreach ($row as &$v) {
$v['jiaoqi']=$v['jiaoqi']=='0000-00-00'?'':$v['jiaoqi'];
}
$smarty=& $this->_getView();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");//设置缓存
header("Content-Type: application/force-download");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=采购合同.xls");
header("Content-Transfer-Encoding: binary");
$smarty->assign('title','导出');
$smarty->assign('aRow',$row);
$smarty->display('Caigou/export.tpl');//准备好一个xml格式的模板,可打开excel转为xml格式即可
}