说明:PHPExcel导出代码是百度查出来的,但是忘了是哪个地址了,侵权删。但是数据库部分代码及html是自己写的。
<?php include './lib/PHPExcel.php'; include './lib/PHPExcel/Writer/Excel2007.php'; include './MysqlDB.php'; //测试方法 function test(){ //这里是为了链接数据库进行内容查询,与下面的data=array二选一,都是测试数据,为了提供可导出数据的。 $config = array( 'dbname'=>'shop1' ); $con = MysqlDB::getInstance($config); $sql = "select * from shop_admin"; //获取你要导出的数据,你要获取的到数据库的数据 // $data = array( // array('王城', '男', '18', '1997-03-13'), // array('李飞虹', '男', '21', '1994-06-13'), // array('王芸', '女', '18', '1997-03-13'), // array('郭瑞', '男', '17', '1998-04-13'), // array('李晓霞', '女', '19', '1996-06-13'), // ); // //设置要导出excel的表头 // $fileheader= array('姓名', '性别', '年龄', '出生日期'); //处理数据 $data = $con->getAll($sql); $fileheader= array('id', 'username', '密码', 'sort','create_time','udate_time'); exportExcel($data,'测试',$fileheader,'Sheet1'); } //导出方法 function exportExcel($data, $savefile, $fileheader, $sheetname){ //或者excel5,用户输出.xls,不过貌似有bug,生成的excel有点问题,底部是空白,不过不影响查看。 //import("Org.Util.PHPExcel.Reader.Excel5"); //new一个PHPExcel类,或者说创建一个excel,tp中“\”不能掉 $excel = new PHPExcel(); if (is_null($savefile)) { $savefile = time(); }else{ //防止中文命名,下载时ie9及其他情况下的文件名称乱码 iconv('UTF-8', 'GB2312', $savefile); } //设置excel属性 $objActSheet = $excel->getActiveSheet(); //根据有生成的excel多少列,$letter长度要大于等于这个值 $letter = array('A','B','C','D','E','F','F','G'); //设置当前的sheet $excel->setActiveSheetIndex(0); //设置sheet的name $objActSheet->setTitle($sheetname); //设置表头 for($i = 0;$i < count($fileheader);$i++) { //单元宽度自适应,1.8.1版本phpexcel中文支持勉强可以,自适应后单独设置宽度无效 //$objActSheet->getColumnDimension("$letter[$i]")->setAutoSize(true); //设置表头值,这里的setCellValue第二个参数不能使用iconv,否则excel中显示false $objActSheet->setCellValue("$letter[$i]1",$fileheader[$i]); //设置表头字体样式 $objActSheet->getStyle("$letter[$i]1")->getFont()->setName('微软雅黑'); //设置表头字体大小 $objActSheet->getStyle("$letter[$i]1")->getFont()->setSize(12); //设置表头字体是否加粗 $objActSheet->getStyle("$letter[$i]1")->getFont()->setBold(true); //设置表头文字垂直居中 $objActSheet->getStyle("$letter[$i]1")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置文字上下居中 $objActSheet->getStyle($letter[$i])->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); //设置表头外的文字垂直居中 $excel->setActiveSheetIndex(0)->getStyle($letter[$i])->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); } //单独设置D列宽度为15 $objActSheet->getColumnDimension('D')->setWidth(15); //这里$i初始值设置为2,$j初始值设置为0,自己体会原因 for ($i = 2;$i <= count($data) + 1;$i++) { $j = 0; foreach ($data[$i - 2] as $key=>$value) { //不是图片时将数据加入到excel,这里数据库存的图片字段是img $objActSheet->setCellValue("$letter[$j]$i",$value); $j++; } //设置单元格高度,暂时没有找到统一设置高度方法 $objActSheet->getRowDimension($i)->setRowHeight('80px'); } header('Content-Type: application/vnd.ms-excel'); //下载的excel文件名称,为Excel5,后缀为xls,不过影响似乎不大 header('Content-Disposition: attachment;filename="' . $savefile . '.xlsx"'); header('Cache-Control: max-age=0'); // 用户下载excel $objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $objWriter->save('php://output'); // 保存excel在服务器上 //$objWriter = new PHPExcel_Writer_Excel2007($excel); //或者$objWriter = new PHPExcel_Writer_Excel5($excel); //$objWriter->save("保存的文件地址/".$savefile); } //调用test测试方法 test();
其中PHPExcel文件需要去官网下载 https://github.com/PHPOffice/PHPExcel 点击打开链接,需要用到的东西是里面Classes
以上代码可以直接执行,但是如果需要在页面点击按钮调用的话也写了个简单的例子
<!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script type="text/javascript" src="jquery-2.1.1.min.js"></script> </head> <body> <div>TODO write content</div> <button type="button"id="goExcel">生成</button> </body> </html> <script> $(function(){ $("#goExcel").bind("click",function(){ $(location).attr('href', './demo.php'); }); }) </script>