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

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

Tags: PHPExcel导出数据到Excel

分享到: