ThinkPHP框架导出Excel数据教程:基于PHPExcel

0 下载量 141 浏览量 更新于2024-09-03 收藏 53KB PDF 举报
本文将介绍如何在ThinkPHP框架中利用PHPExcel库实现Excel数据导出的功能。首先,我们需要在ThinkPHP的扩展目录下添加ORG库,确保包含所需的PHPExcel类文件。然后,通过编写代码来创建PHPExcel对象,查询数据库获取数据,并设置表格格式、表头和数据内容。最后,为了处理大量数据,我们可以将数据分块写入多个sheet,以避免内存溢出问题。 在ThinkPHP框架下实现Excel数据导出,首先需要进行以下步骤: 1. 引入PHPExcel库:在ThinkPHP项目中,需要将PHPExcel库的相关文件放在扩展目录下,通常是在`ThinkPHP/Extend/Library/ORG/Util`路径下。确保包含`PHPExcel.class.php`以及其依赖的其他文件。 2. 创建PHPExcel对象:在控制器或模型中,使用`import`函数引入PHPExcel类,然后创建一个PHPExcel对象,这将是用于生成Excel文件的基础。 ```php import("ORG.Util.PHPExcel"); $excel = new PHPExcel(); ``` 3. 获取数据:从数据库中查询需要导出的数据,例如,这里从`tp_data_user`表中获取用户ID、用户名和目标步数。 ```php $data = M()->query('SELECT userid, username, stepgoal FROM tp_data_user LIMIT 2775'); ``` 4. 设置表格格式:定义Excel表格的列名,这里使用字母A、B、C表示列,并设置表头内容。 ```php $letter = array('A', 'B', 'C'); $tableheader = array('userid', '用户名', '目标步数'); ``` 5. 处理大量数据:如果数据量较大,为了避免一次性加载所有数据导致内存溢出,可以将数据分块写入。这里设置每页最大数据行数为500行,计算总页数,并使用`array_chunk`函数分割数据。 ```php $count = count($data); $listNum = 500; $num = ceil($count / $listNum); $MuitData = array_chunk($data, $listNum, false); ``` 6. 写入数据到多个sheet:遍历分块后的数据,创建新的sheet并写入数据。使用`createSheet`方法创建新的sheet,`getActiveSheet`设置当前活动sheet,`setCellValue`设置单元格内容。 ```php for ($i = 0; $i < $num; $i++) { // 创建新sheet $excel->createSheet(); // 设置当前sheet $excel->setActiveSheetIndex($i); // 写入表头 $cellName = $letter[0]; foreach ($tableheader as $th) { $excel->getActiveSheet()->setCellValue($cellName++, $th); } // 写入数据 $row = 1; foreach ($MuitData[$i] as $value) { $cellName = 'A'; foreach ($value as $item) { $excel->getActiveSheet()->setCellValue($cellName++, $item); } $row++; } } ``` 7. 设置输出参数:设置Excel文件的输出类型(如`.xlsx`或`.xls`)和内容类型,然后使用`output`方法将文件内容直接输出到浏览器。 ```php header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="export.xlsx"'); header('Cache-Control: max-age=0'); $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $writer->save('php://output'); exit; ``` 以上就是使用ThinkPHP框架和PHPExcel库导出Excel数据的基本步骤。通过这种方式,你可以根据实际需求灵活地导出和处理大量数据,同时避免了内存管理的问题。