本篇和上篇类型,只是顺序发生了变化——从Mysql度数据并保存到Excel中。
导出XLS流程:读取数据库的表->循环记录构建制表符分隔的字段信息->设置header信息->导出文件(下载)到本地。
下面直接分享代码,导出文件outdb.php如下:
require_once './PHPExcel.php'; //路径根据自己实际项目的路径进行设置
//下面是对mysql数据库的连接
require_once './conn.php';
$objPHPExcel = new PHPExcel(); //创建PHPExcel实例
$sql = mysql_query("select * from php_excel order by Id asc"); //查询sql语句
if (!$sql) echo "SQL错误:".mysql_error();
/*--------------设置表头信息------------------*/
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '编号')
->setCellValue('B1', '学号')
->setCellValue('C1', '姓名')
->setCellValue('D1', '年龄');
/*--------------开始从数据库提取信息插入Excel表中------------------*/
$i=2; //定义一个i变量,目的是在循环输出数据是控制行数
while($rs = mysql_fetch_array($sql)){
//$rm = iconv("GB2312","UTF-8",$rs[1]); //对字符进行编码将数据库里GB2312的中文字符转换成UTF-8格式
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue("A".$i, $rs[0])
->setCellValue("B".$i, $rs[1])
->setCellValue("C".$i, $rs[2])
->setCellValue("D".$i, $rs[3]);
$i++;
}
/*--------------下面是设置其他信息------------------*/
$date = date('Y-m-d-His');
$objPHPExcel->getActiveSheet()->setTitle($date.'sheet'); //设置sheet的名称
$objPHPExcel->setActiveSheetIndex(0); //设置sheet的起始位置
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //通过PHPExcel_IOFactory的写函数将上面数据写出来
//$objWriter->save(str_replace('.php', '.xls', __FILE__)); //设置以什么格式保存,及保存位置
//$objWriter->save('php://output');
//实现在下载时浏览器和用户的交互
$outputFileName = "jcb-$date.xls";
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
至此,从Mysql数据库读取数据批量导入到Excel文件 完成。
学无止境,愿每天都进步一点点~~~