当前位置:首页 > PHP教程 > php应用 > 列表

PHP利用PHPExcel导出数据到Excel

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-31 11:11:23 浏览: 评论:0 

PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。

直接贴代码吧!

● PHP版本5.6.38

● mysql版本5.0

  1. //连接数据库 
  2.  
  3. $mysql_server_name = "*.*.*.*"
  4.  
  5. $mysql_username="user"
  6.  
  7. $mysql_password="dbpasswd"
  8.  
  9. $mysql_database="test"
  10.  
  11. $conn = mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); 
  12.  
  13. // 检测连接 
  14.  
  15. if ($conn->connect_error) { 
  16.  
  17.     die("连接失败: " . $conn->connect_error); 
  18.  
  19.  
  20. //设置字符集,如果不设置的话中文可能会乱码 
  21.  
  22. $conn->query("set names utf8"); 
  23.  
  24. //查询数据 
  25.  
  26. $sql = "SELECT * FROM testdata WHERE  inserttime > '2019-09-13' AND inserttime <'2019-0916'"
  27.  
  28. $result = $conn->query($sql); 
  29.  
  30. //遍历将数据放入数组中 
  31.  
  32. $data =array(); 
  33.  
  34. while ($row = $result->fetch_assoc()) 
  35.  
  36.  
  37.     $data[] = $row
  38.  
  39.  
  40. //将查询出来的数据导入Excel中 
  41.  
  42. require_once('./PHPExcel/PHPExcel.php'); 
  43.  
  44. // 创建Excel文件对象 
  45.  
  46. $objPHPExcel = new PHPExcel(); 
  47.  
  48. // 设置文档信息,这个文档信息windows系统可以右键文件属性查看 
  49.  
  50. $objPHPExcel->getProperties()->setCreator("wnn"
  51.  
  52.     ->setLastModifiedBy("wnn"
  53.  
  54.     ->setTitle("原创文章链接"); 
  55.  
  56. $objPHPExcel->setActiveSheetIndex(0) 
  57.  
  58.     ->setCellValue('A1','文章ID'
  59.  
  60.     ->setCellValue('B1','标题'
  61.  
  62.     ->setCellValue('C1','链接'
  63.  
  64.     ->setCellValue('D1','作者'
  65.  
  66.     ->setCellValue('E1','发布时间'); 
  67.  
  68. //设置excel表单根据内容大小变化 
  69.  
  70. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true); 
  71.  
  72. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); 
  73.  
  74. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); 
  75.  
  76. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true); 
  77.  
  78. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true); 
  79.  
  80. //$i=1是标题行 
  81.  
  82. $i=2; 
  83.  
  84. foreach ($data as $k=>$v){ 
  85.  
  86.     $objPHPExcel->setActiveSheetIndex(0) 
  87.  
  88.         ->setCellValue('A'.$i,$v['id']) 
  89.  
  90.         ->setCellValue('B'.$i,$v['title']) 
  91.  
  92.         ->setCellValue('C'.$i,$v['arcurl']) 
  93.  
  94.         ->setCellValue('D'.$i,$v['writer']) 
  95.  
  96.         ->setCellValue('E'.$i,$v['senddate']); 
  97.  
  98.    //给C列的文字加上链接 
  99.  
  100.     $objPHPExcel->getActiveSheet()->getCell('C'.$i)->getHyperlink()->setUrl($v['arcurl']); 
  101.  
  102.     $i++; 
  103.  
  104.  
  105. //给C列的超链接字体颜色变成蓝色 
  106.  
  107. $length = count($data)+1; 
  108.  
  109. $objPHPExcel->getActiveSheet()->getStyle( 'C2:C'.$length)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLUE); 
  110.  
  111. //文件名称 
  112.  
  113. $filename=urlencode('原创作品').'_'.date('YmdHis'); 
  114.  
  115. //生成xls文件 
  116.  
  117. ob_end_clean();//清除缓冲区,避免乱码 
  118.  
  119. header('Content-Type: application/vnd.ms-excel'); 
  120.  
  121. header('Content-Disposition: attachment;filename="'.$filename.'.xls"'); 
  122.  
  123. header('Cache-Control: max-age=0'); 
  124.  
  125. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5'); 
  126.  
  127. $objWriter->save('php://output'); 

如果导出来的Excel文字都是乱码的话,一定要在header()前面加上ob_end_clean()!

Tags: PHPExcel导出数据到Excel

分享到: