最近需要搞一个php导出功能,以前没咋搞过php项目,java的poi导出倒是很早就接触到了。于是,查阅了一些资料,选用强大的开源phpexcel技术。
具体用法如下:
1. 下载工具包,http://phpexcel.codeplex.com/,现在我用的最新版本PHPExcel 1.7.6 Production。
我们可以直接解压到apache服务器的访问目录,可以直接访问里面的demo,找到适合自己的。
2. copy压缩包的phpexcel文件(包含常用方法的定义)、demo.php至自己的项目,
demo.php:
修改require指向的路径,PHPExcel.php是主要的工具类,用它new对象即可对excel进行创建、插入、设置样式等操作了。
3. 下面是我的一些代码示例。
// Create new PHPExcel object
$objPHPExcel = new PHPExcel(); // 创建php工具类对象
if($type==0){
// Set properties 设置一些基本属性,一般我们不需要改动
$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");
// Add some data 添加数据 A2:代表第一列第2行,以此类推
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A2', '渠道')
->setCellValue('B1', '包月用户')
$objPHPExcel->getSheet(0)->mergeCells("B1:F1"); // 合并第一个
$objPHPExcel->getSheet(0)->mergeCells("G1:I1");
$objPHPExcel->getSheet(0)->getStyle("A1:I1")->getFont()->setBold(true); //设置字体加粗
// 居中显示
$objPHPExcel->getSheet(0)->getStyle("A1:I1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getSheet(0)->getStyle("A2:I2")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getSheet(0)->getColumnDimension("A")->setWidth(15); // 设置宽度
$objPHPExcel->getSheet(0)->getColumnDimension("B")->setWidth(15);
// 查询获取数据
$sql_ch_stat = "select * from cnl ";
$row_ch_stat = $db->query($sql_ch_stat);
$num=3; // 从第三行开始循环添加数据
while($rs_ch_stat = $db->fetch_array($row_ch_stat)){
$index=0;
// 给确定的单元格赋值,要名称行indexid和列indexid
$objPHPExcel->setActiveSheetIndex(0)->getCellByColumnAndRow($index,$num)->setValue($rs_ch_stat["cnlid_des"]);
foreach($ch_stats as $k=>$v){
$outnum = isset($rs_ch_stat[$k])?$rs_ch_stat[$k]:0;
$index++;
$objPHPExcel->setActiveSheetIndex(0)->getCellByColumnAndRow($index,$num)->setValue($outnum);
// ->setCellValue('B'.$num, $outnum);
}
$num++;
}
$objPHPExcel->setActiveSheetIndex(0);
如果导出的excel无法打开,添加下面两行。
ob_end_clean(); // Added by me
ob_start(); // Added by me
大致就这么多就够用了。。。。