最近在工作中,有需求是要导出项目中的订单,但是再网上查了资料,发现比较全面的PHPExcel类使用说明很少,即使有写的也不全面,不易懂。下面我就把我工作中总结的PHPExcel操作的一些有用的方法写在下面:
前提是要去网上下载PHPExcel操作类,把Classes文件夹复制到项目中,其它不需要也可以!
<?php include './PHPExcel/PHPExcel.php'; include './PHPExcel/PHPExcel/Writer/Excel5.php'; $objPHPExcel = new PHPExcel(); /* header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="lgq.xls"'); header('Cache-Control: max-age=0'); //IE9加入下面代码 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 = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save('php://output'); //设置标题、题目 $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); 设置当前的sheet $objPHPExcel->setActiveSheetIndex(0); 设置sheet的name $objPHPExcel->getActiveSheet()->setTitle('Simple'); 设置单元格的值 $objPHPExcel->getActiveSheet()->setCellValue('A1', 'String'); 合并单元格 $objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); 分离单元格 $objPHPExcel->getActiveSheet()->unmergeCells('A28:B28'); 设置宽width Set column widths $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); // 设置单元格高度 所有单元格默认高度 $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15); 第一行的默认高度 $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); 设置填充颜色 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB("0017C405");*/ $datas = array( array('王城', '男', '18', '1997-03-13', '18948348924'), array('李飞虹', '男', '21', '1994-06-13', '159481838924'), array('王芸', '女', '18', '1997-03-13', '18648313924'), array('郭瑞', '男', '17', '1998-04-13', '15543248924'), array('李晓霞', '女', '19', '1996-06-13', '18748348924'), ); $objPHPExcel->getProperties()->setCreator("test"); //最后修改人 $objPHPExcel->getProperties()->setLastModifiedBy("test123"); //标题 $objPHPExcel->getProperties()->setTitle("test1234"); //题目 $objPHPExcel->getProperties()->setSubject("test456"); //描述 $objPHPExcel->getProperties()->setDescription("test567"); //关键字 $objPHPExcel->getProperties()->setKeywords("test789"); //种类 $objPHPExcel->getProperties()->setCategory("testkind"); //标题 $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '名字')->setCellValue('B1', '性别')->setCellValue('C1', '年龄')->setCellValue('D1', '出生日期')->setCellValue('E1', '电话号码'); // Rename worksheet $objPHPExcel->getActiveSheet()->setTitle('Phpmarker-' . date('Y-m-d')); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); //所有单元格 $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15); //冻结窗口 $objPHPExcel->getActiveSheet()->freezePane('A2'); //循环获取数据 $i = 2; foreach($datas as $data){ //文本对齐方式 $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[0])->getStyle('A'.$i)->getAlignment()->setHorizontal( PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $data[1]); $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $data[2]); //设置填充颜色 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB("0017C405"); //设置文本格式为字符串 $objPHPExcel->getActiveSheet()->setCellValueExplicit('D'. $i, $data[3],PHPExcel_Cell_DataType::TYPE_STRING); //设置单元格格式 $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getNumberFormat()->setFormatCode("@"); // 设置文本格式 $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'. $i, $data[4],PHPExcel_Cell_DataType::TYPE_STRING); $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setWrapText(true); $i++; if($i>count($datas)+2){ $i=2; } } $objActSheet = $objPHPExcel->getActiveSheet(); // 设置CELL填充颜色 $cell_fill = array( 'A1', 'B1', 'C1', 'D1', 'E1', ); foreach($cell_fill as $cell_fill_val){ //得到每个单元格 $cellstyle = $objActSheet->getStyle($cell_fill_val); // background // $cellstyle->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('fafa00'); // 设置左对齐和垂直居中 $cellstyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT)->setVertical( PHPExcel_Style_Alignment::VERTICAL_CENTER); // font字体大小、粗 $cellstyle->getFont()->setSize(12)->setBold(true); // border颜色 $cellstyle->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB(' FFFF0000'); $cellstyle->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB(' FFFF0000'); $cellstyle->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB(' FFFF0000'); $cellstyle->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB(' FFFF0000'); } //第一行的默认高度 $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //设置各行的宽度 $objActSheet->getColumnDimension('A')->setWidth(18.5); $objActSheet->getColumnDimension('B')->setWidth(23.5); $objActSheet->getColumnDimension('C')->setWidth(12); $objActSheet->getColumnDimension('D')->setWidth(12); $objActSheet->getColumnDimension('E')->setWidth(12); //加上这些就告诉流浪器要下载xls文件 $filename = '2015030423'; ob_end_clean();//清除缓冲区,避免乱码 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$filename.'.xls"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed 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 = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save('php://output'); //到处中文时,会出现乱码,记得在Header 之前加 ob_end_clean() 清除缓冲区,避免乱码 ?>
“导入”就简单了:具体打开下载的类面:Documentation\Examples\Reader,里面有很多例子。