Export_Excel.php
2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* 该文件为导出数据库内容为Excel文件
* 需要数据库phpexcel下的student表,请注意有数据!
* 附加题:判断数据库为空或条件查询无内容时显示无数据,并停止导出流程
* Created by PhpStorm.
* User: shu
* Date: 2019-06-28
* Time: 23:48
*/
$link = mysqli_connect('127.0.0.1','root','root','phpexcel');
mysqli_set_charset($link,'utf8mb4');
include("./PHPExcel_Croe/PHPExcel.php");
$data = mysqli_fetch_all(mysqli_query($link,"SELECT * FROM student"),MYSQLI_ASSOC);
//PHPExcel支持读模版 所以我还是比较喜欢先做好一个Excel的模版 比较好,不然要写很多代码 模版我放在根目录了
//创建一个读Excel模版的对象
$objReader = PHPExcel_IOFactory::createReader ( 'Excel2007' );
//读取模板文件
$objPHPExcel = $objReader->load ("template.xlsx" );
//获取当前活动的表
$objActSheet = $objPHPExcel->getActiveSheet ();
//单独设置单元格信息
$objActSheet->setTitle ( '导出学生信息' );
$objActSheet->setCellValue ( 'A1', '学生信息导出' );
$objActSheet->setCellValue ( 'H3', '导出时间:' . date ( 'Y年m月d日 H:i:s' ) );
//具体有多少列 看你的数据走 会涉及到计算
//现在就开始填充数据了 (从数据库中) $data
$baseRow = 3; //数据从N-1行开始往下输出 这里是避免头信息被覆盖
foreach ( $data as $r => $dataRow ) {
$row = $baseRow + $r;
//将数据填充到相对应的位置
$objPHPExcel->getActiveSheet ()->setCellValue ( 'A' . $row, $dataRow ['id'] ); //学员编号
$objPHPExcel->getActiveSheet ()->setCellValue ( 'B' . $row, $dataRow ['sno'] ); //真实姓名
$objPHPExcel->getActiveSheet ()->setCellValue ( 'C' . $row, $dataRow ['name'] ); //真实姓名
$objPHPExcel->getActiveSheet ()->setCellValue ( 'D' . $row, $dataRow ['department'] ); //真实姓名
$objPHPExcel->getActiveSheet ()->setCellValue ( 'E' . $row, $dataRow ['major'] ); //真实姓名
$objPHPExcel->getActiveSheet ()->setCellValue ( 'F' . $row, $dataRow ['class'] ); //真实姓名
}
//导出
$filename = '学生信息导出'.time ();
header ( 'Content-Type: application/vnd.ms-excel' );
header ( 'Content-Disposition: attachment;filename="' . $filename . '.xls"' ); //"'.$filename.'.xls"
header ( 'Cache-Control: max-age=0' );
$objWriter = PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' ); //在内存中准备一个excel2003文件
$objWriter->save ( 'php://output' );