• 每天进步一点点!

文章分类

推荐网站

常用手册

PHPExcel类使用【原创】

<<返回

2012-05-14 11:54:04

PHPExcel类是一个功能强大的PHP对Excel格式进行操作的类,今天正好用到,研究了一下。

直接看代码吧,代码上有注释。

require 'PHPExcel.php';  //引入PHPExcel类文件

 $objExcel = new PHPExcel();  // 创建一个处理对象实例 

$objWriter = new PHPExcel_Writer_Excel2007($objExcel);  //保存为Excel2007格式

$objExcel->setActiveSheetIndex(0);  //缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0  

$objActSheet = $objExcel->getActiveSheet();  //获取当前激活sheet的句柄

$objActSheet->setTitle('学生信息');  //设置当前激活sheet的sheet名称

$outputFileName = "students_teachers_info.xlsx";  

$counter = 1;
//设置单元格的值
$objActSheet->setCellValue('A' . $counter, '学号');  
$objActSheet->setCellValue('B' . $counter , '姓名');            
$objActSheet->setCellValue('C' . $counter, '性别');          
$objActSheet->setCellValue('D' . $counter, '年龄');  
$objActSheet->setCellValue('E' . $counter, '院系');            
$objActSheet->setCellValue('F' . $counter, '班级');          

//将mysql中的数据写到Excel表中
$link = mysql_connect ( 'localhost', 'root', '' );
mysql_select_db ( 'students', $link );
mysql_query('SET NAMES utf8', $link);

$sql = "select * from students" ;
$query = mysql_query($sql);
$counter ++;
while ($rows = mysql_fetch_assoc($query)) {
	$objActSheet->setCellValue('A'.$counter, $rows['student_no']);
	$objActSheet->setCellValue('B'.$counter, $rows['student_name']);  
	$objActSheet->setCellValue('C'.$counter, $rows['student_sex']);  
	$objActSheet->setCellValue('D'.$counter, $rows['student_age']);  
	$objActSheet->setCellValue('E'.$counter, $rows['student_department']);  
	$objActSheet->setCellValue('F'.$counter, $rows['student_class']);  	
	
	$objWriter->save($outputFileName); //写入到文件  
	$counter ++;
}

//创建一个新的sheet,用来保存教师信息
$objExcel->createSheet()->setTitle('教师信息');  //设置当前激活sheet的sheet名称

$objExcel->setActiveSheetIndex(1);  

$objActSheet = $objExcel->getActiveSheet();  

$counter = 1; //设置单元格的值 $objActSheet->setCellValue('A' . $counter, '编号'); 

$objActSheet->setCellValue('B' . $counter , '姓名'); 
$objActSheet->setCellValue('C' . $counter, '性别'); 
$objActSheet->setCellValue('D' . $counter, '年龄');
$objActSheet->setCellValue('E' . $counter, '职称');
$objActSheet->setCellValue('F' . $counter, '院系'); 

//将mysql中的数据写到Excel表中 
$sql = "select * from teachers" ;
$query = mysql_query($sql); $counter ++; 
while ($rows = mysql_fetch_assoc($query)) {
	$objActSheet->setCellValue('A'.$counter, $rows['teacher_no']);
	$objActSheet->setCellValue('B'.$counter, $rows['teacher_name']);
	$objActSheet->setCellValue('C'.$counter, $rows['teacher_sex']); 
	$objActSheet->setCellValue('D'.$counter, $rows['teacher_age']);
	$objActSheet->setCellValue('E'.$counter, $rows['teacher_title']); 
	$objActSheet->setCellValue('F'.$counter, $rows['teacher_department']);
	$objWriter->save($outputFileName); //写入到文件 
	$counter ++; 
}



以上是工作中用到的从mysql中导出excel表的方法,下面是一些更详细的设置,没有做过验证。用到时可以试试



$objPHPExcel = new PHPExcel();

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);//PHP类phpExcel保存excel—2007格式

$objWriter=new PHPExcel_Writer_Excel5($objPHPExcel);//非2007格式

$objWriter->save("xxx.xlsx");

//直接输出到浏览器
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
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="resume.xls" ');
header("Content-Transfer-Encoding:binary");
$objWriter->save("php://output");

//设置表属性
$objPHPExcel->getProperties()->setCreator(”xiaoyu”);//创建人
$objPHPExcel->getProperties()->setLastModifiedBy(”xiaoyu”);//最后修改人
$objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);//标题
$objPHPExcel->getProperties()->setSubject(”Office 2007 XLSX Test Document”);//题目
$objPHPExcel->getProperties()->setDescription(”Test document for Office 2007 XLSX, generated using PHP classes.”);//描述
$objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);//关键字
$objPHPExcel->getProperties()->setCategory(”Test result file”);//种类
$objPHPExcel->setActiveSheetIndex(0);//PHP类phpExcel设置当前的sheet
$objPHPExcel->getActiveSheet()->setTitle(’Simple’);//设置sheet的name

//设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘String’)
$objPHPExcel->getActiveSheet()->setCellValue(’A2′, 12);
$objPHPExcel->getActiveSheet()->setCellValue(’A3′, true);
$objPHPExcel->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);
$objPHPExcel->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);

//合并单元格
$objPHPExcel->getActiveSheet()->mergeCells(’A18:E22′);

//PHP类phpExcel分离单元格
$objPHPExcel->getActiveSheet()->unmergeCells(’A28:B28′);

//保护cell
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection!
$objPHPExcel->getActiveSheet()->protectCells(’A3:E13′, ‘PHPExcel’);

//设置格式
echo date(’H:i:s’) . ” Set cell number formatsn”;
$objPHPExcel->getActiveSheet()->getStyle(’E4′)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
$objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle(’E4′), ‘E5:E13′ );



//PHP类phpExcel设置宽width
$objPHPExcel->getActiveSheet()->getColumnDimension(’B’)->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension(’D’)->setWidth(12);

//设置font
$objPHPExcel->getActiveSheet()->getStyle(’B1′)->getFont()->setName(’Candara’);
$objPHPExcel->getActiveSheet()->getStyle(’B1′)->getFont()->setSize(20);
$objPHPExcel->getActiveSheet()->getStyle(’B1′)->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(’B1′)->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objPHPExcel->getActiveSheet()->getStyle(’B1′)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
$objPHPExcel->getActiveSheet()->getStyle(’E1′)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
$objPHPExcel->getActiveSheet()->getStyle(’D13′)->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(’E13′)->getFont()->setBold(true);


//PHP类phpExcel设置align

$objPHPExcel->getActiveSheet()->getStyle(’D11′)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle(’D12′)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle(’D13′)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle(’A18′)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);

//垂直居中
$objPHPExcel->getActiveSheet()->getStyle(’A18′)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

//PHP类phpExcel设置column的border
$objPHPExcel->getActiveSheet()->getStyle(’A4′)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(’B4′)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(’C4′)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(’D4′)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(’E4′)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);



//设置border的color
$objPHPExcel->getActiveSheet()->getStyle(’D13′)->getBorders()->getLeft()->getColor()->setARGB(’FF993300′);
$objPHPExcel->getActiveSheet()->getStyle(’D13′)->getBorders()->getTop()->getColor()->setARGB(’FF993300′);
$objPHPExcel->getActiveSheet()->getStyle(’D13′)->getBorders()->getBottom()->getColor()->setARGB(’FF993300′);
$objPHPExcel->getActiveSheet()->getStyle(’E13′)->getBorders()->getTop()->getColor()->setARGB(’FF993300′);
$objPHPExcel->getActiveSheet()->getStyle(’E13′)->getBorders()->getBottom()->getColor()->setARGB(’FF993300′);
$objPHPExcel->getActiveSheet()->getStyle(’E13′)->getBorders()->getRight()->getColor()->setARGB(’FF993300′);



//设置填充颜色
$objPHPExcel->getActiveSheet()->getStyle(’A1′)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle(’A1′)->getFill()->getStartColor()->setARGB(’FF808080′);
$objPHPExcel->getActiveSheet()->getStyle(’B1′)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle(’B1′)->getFill()->getStartColor()->setARGB(’FF808080′);



//加图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName(’Logo’);
$objDrawing->setDescription(’Logo’);
$objDrawing->setPath(’./images/officelogo.jpg’);
$objDrawing->setHeight(36);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName(’Paid’);
$objDrawing->setDescription(’Paid’);
$objDrawing->setPath(’./images/paid.png’);
$objDrawing->setCoordinates(’B15′);
$objDrawing->setOffsetX(110);
$objDrawing->setRotation(25);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(45);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

 

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论