TP导出excel

TP导出excel

1,先去官网下载phpexcel

phpexcel.zip

2,两个文件分别放到以下目录下面

blob.png

3,创建导出excel方法

	/**
	 * 導出excel
	 * $tableheader:表頭
	 * $tableheader = array('订单编号', '下单商品', '商品名', '客户', '总价', '下单时间', '支付类型', '订单跟踪');
	 * $data:表格內容
	 * array('小李', '女', '21', 'CS12', $pic),
	 * $num:圖片位於倒數第幾個
	 * 表格寬度
	 * $table_width
	 * 表格高度
	 * $table_height
	 */
	public function orderExcelOut($tableheader,$data,$num="7",$name="潮搜time()",$table_width=30,$table_height=90){
		vendor("PHPExcel");
		/*实例化excel类*/
		$excel = new \PHPExcel();
		/*实例化excel图片处理类*/
		$objDrawing = new \PHPExcel_Worksheet_Drawing();
		/*设置文本对齐方式*/
		$excel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		$excel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
		$objActSheet = $excel->getActiveSheet();
		$letter = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N');
		/*设置表头数据*/
		//$tableheader = array('姓名', '性别', '年龄', '班级', '头像');
		/*填充表格表头*/
		for($i = 0;$i < count($tableheader);$i++) {
			$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
		}
		for ($i = 0;$i < count($data);$i++) {
			$j = $i + 2;
			/*设置表格宽度*/
			$objActSheet->getColumnDimension("$letter[$i]")->setWidth($table_width);
			/*设置表格高度*/
			$excel->getActiveSheet()->getRowDimension($j)->setRowHeight($table_height);
			/*向每行单元格插入数据*/
			for ($row = 0;$row < count($data[$i]);$row++) {
				if ($row == (count($data[$i]) -$num )) {
					/*实例化插入图片类*/
					$objDrawing = new \PHPExcel_Worksheet_Drawing();
					/*设置图片路径 切记:只能是本地图片*/
					$objDrawing->setPath($data[$i][$row]);
					/*设置图片高度*/
					$objDrawing->setHeight(100);
					/*设置图片要插入的单元格*/
					$objDrawing->setCoordinates("$letter[$row]$j");
					/*设置图片所在单元格的格式*/
					//$objDrawing->setOffsetX(80);
					//$objDrawing->setRotation(20);
					$objDrawing->getShadow()->setVisible(true);
					$objDrawing->getShadow()->setDirection(50);
					$objDrawing->setWorksheet($excel->getActiveSheet());
					continue;
				}
				$excel->getActiveSheet()->setCellValue("$letter[$row]$j",$data[$i][$row]);
			}
		}
		/*实例化excel输入类并完成输出excel文件*/
		$name = $name.".xls";
		$write = new \PHPExcel_Writer_Excel5($excel);
		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/vnd.ms-execl");
		header("Content-Type:application/octet-stream");
		header("Content-Type:application/download");;
		header("Content-Disposition:attachment;filename=$name");
		header("Content-Transfer-Encoding:binary");
		$write->save('php://output');
	}

4,使用

function output() {
		$list_data = $this->_get_model_list ( $this->model );
		$map ['is_show'] = 1;
		$list = M ( 'shop_goods_category' )->where ( $map )->field ( 'id,title' )->select ();
		$cate [0] = '';
		foreach ( $list as $vo ) {
			$cate [$vo ['id']] = $vo ['title'];
		}
		foreach ( $list_data ['list_data'] as $key => &$vo ) {
			$vo ['category_id'] = intval ( $vo ['category_id'] );
			$vo ['category_id'] = $cate [$vo ['category_id']];
			$str = "/Uploads";
			$vo ['pic'] = SITE_PATH.strstr(get_cover_url($vo['cover']),$str);
			//整合数据
			$is_shop = array("1"=>"是","0"=>"不是");
			$data[$key][] = $vo['id'];
			$data[$key][] = $vo['category_id'];
			$data[$key][] = $vo['pic'];
			$data[$key][] = $vo['title'];
			$data[$key][] = $vo['price'];
			$data[$key][] = $vo['inventory'];
			$data[$key][] = $vo['sale_count'];
			$data[$key][] = $is_shop[$vo['is_show']];
		}
		$tableheader = array('商品id', '商品分类', '封面图', '商品名称', '价格', '库存量', '销售量', '是否上架');
		$num=6;
		$name=time();
		$this->orderExcelOut($tableheader, $data,$num,$name);
	}

大功告成!


回复列表


回复操作