PHPexcel创建多个SHEET操作

  1. <?php
  2. require_once "conn.php";
  3. require_once ‘Classes/DATATOExcel.php’;
  4. foreach($_POST as $key=>$val)  ${$key} = $val;
  5. foreach($_GET as $key=>$val)  ${$key} = $val;
  6. $out_excel = new \DATATOExcel();
  7. $out_file = "out_excel";
  8. //$ary_tables = $tb;
  9. //$out_excel->show_tables($conn,$sql_type);
  10. //输入数组:根据选择后的列组成SQL,根据SQL查询的结果
  11. //根据列名导出EXCEL
  12. $objPHPExcel = new \PHPExcel();
  13. $title_ary = array();
  14. $title_show_ary = array();
  15. $value_ary = array();
  16. $cellKey = array(
  17. ‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’,’M’,
  18. ‘N’,’O’,’P’,’Q’,’R’,’S’,’T’,’U’,’V’,’W’,’X’,’Y’,’Z’,
  19. ‘AA’,’AB’,’AC’,’AD’,’AE’,’AF’,’AG’,’AH’,’AI’,’AJ’,’AK’,’AL’,’AM’,
  20. ‘AN’,’AO’,’AP’,’AQ’,’AR’,’AS’,’AT’,’AU’,’AV’,’AW’,’AX’,’AY’,’AZ’
  21. );
  22. //=====生成SHEET循环
  23. $objPHPExcel->createSheet();
  24. //设置活动SHEET
  25. $objPHPExcel->setActiveSheetIndex(0);
  26. //设置当前活动sheet的名称
  27. $objActSheet = $objPHPExcel->getActiveSheet();
  28. $objActSheet->setTitle(‘数据库表结构’);
  29. $objPHPExcel->getActiveSheet()->getColumnDimension(‘A’)->setWidth(10);//设置列宽度
  30. $objPHPExcel->getActiveSheet()->getColumnDimension(‘B’)->setWidth(30);//设置列宽度
  31. $objPHPExcel->getActiveSheet()->getColumnDimension(‘C’)->setWidth(30);//设置列宽度
  32. $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘A1′,’序号’);
  33. //设置column的border
  34. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  35. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  36. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  37. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  38. //设置border的color
  39. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getTop()->getColor()->setARGB(‘FF000000’);
  40. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getBottom()->getColor()->setARGB(‘FF000000’);
  41. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getLeft()->getColor()->setARGB(‘FF000000’);
  42. $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getRight()->getColor()->setARGB(‘FF000000’);
  43. $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘B1′,’表名称’);
  44. $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  45. $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  46. $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  47. $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  48. $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘C1′,’实体名’);
  49. $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  50. $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  51. $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  52. $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  53. $i_js = 2;       
  54. foreach($tb as $tb_name=>$v)
  55. {
  56.         $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘A’.$i_js,$i_js);
  57.         $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘B’.$i_js,$tb_name);
  58.         $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘C’.$i_js,”);
  59.        
  60.         $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  61.         $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  62.         $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  63.         $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  64.         $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  65.         $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  66.         $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  67.         $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  68.         $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  69.         $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  70.         $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  71.         $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  72.        
  73.         $i_js++;
  74. }
  75. $sheet_id = 1;
  76. foreach($tb as $tb_name=>$v)
  77. {
  78.         $objPHPExcel->createSheet();
  79.         //设置活动SHEET
  80.     $objPHPExcel->setActiveSheetIndex($sheet_id);
  81.         //设置当前活动sheet的名称
  82.         $objActSheet = $objPHPExcel->getActiveSheet();
  83.         $objActSheet->setTitle($tb_name);
  84.        
  85.         $objPHPExcel->getActiveSheet()->getColumnDimension(‘A’)->setWidth(30);//设置列宽度
  86.         $objPHPExcel->getActiveSheet()->getColumnDimension(‘B’)->setWidth(30);//设置列宽度
  87.         $objPHPExcel->getActiveSheet()->getColumnDimension(‘C’)->setWidth(30);//设置列宽度
  88.         $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘A1′,’字段中文名’);
  89.         $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘B1′,’字段名’);
  90.         $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘C1′,’字段类型’);
  91.        
  92.         $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  93.         $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  94.         $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  95.         $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  96.        
  97.         $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  98.         $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  99.         $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  100.         $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  101.         $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  102.         $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  103.         $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  104.         $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  105.        
  106.         //根据数据库表名取得数据库列名以及列信息
  107.         $colnum_ary = $out_excel->show_columns($conn,$tb_name,$sql_type);
  108.        
  109.         //print_r($colnum_ary);
  110.         $col_row = 2;
  111.         foreach($colnum_ary as $c_k=>$c_line)
  112.         {
  113.                 $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘A’.$col_row,$c_line[8]);
  114.                 $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘B’.$col_row,$c_line[0]);
  115.                 $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘C’.$col_row,$c_line[1]);
  116.                
  117.                 $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  118.                 $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  119.                 $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  120.                 $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  121.                 $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  122.                 $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  123.                 $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  124.                 $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  125.                 $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  126.                 $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  127.                 $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  128.                 $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
  129.                
  130.                 $col_row++;
  131.         }
  132.        
  133.        
  134.         $sheet_id++;
  135. }
  136. //exit;
  137. //=============================================================================
  138. ob_end_clean();//清除缓冲区,避免乱码
  139. header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’);
  140. header(‘Content-Disposition: attachment;filename="’.$out_file.’.xlsx"’);
  141. header(‘Cache-Control: max-age=0’);
  142. // If you’re serving to IE 9, then the following may be needed
  143. //header(‘Cache-Control: max-age=1’);
  144. // If you’re serving to IE over SSL, then the following may be needed
  145. //header (‘Expires: Mon, 26 Jul 1997 05:00:00 GMT’); // Date in the past
  146. header (‘Expires:0’); // Date in the past
  147. header (‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’).’ GMT’); // always modified
  148. header (‘Cache-Control: cache, must-revalidate’); // HTTP/1.1
  149. header (‘Pragma: public’); // HTTP/1.0
  150. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
  151. $objWriter->save(‘php://output’);
  152. exit;
  153. ?>

复制代码

发表回复