- <?php
- require_once "conn.php";
- require_once ‘Classes/DATATOExcel.php’;
- foreach($_POST as $key=>$val) ${$key} = $val;
- foreach($_GET as $key=>$val) ${$key} = $val;
- $out_excel = new \DATATOExcel();
- $out_file = "out_excel";
- //$ary_tables = $tb;
- //$out_excel->show_tables($conn,$sql_type);
- //输入数组:根据选择后的列组成SQL,根据SQL查询的结果
- //根据列名导出EXCEL
- $objPHPExcel = new \PHPExcel();
- $title_ary = array();
- $title_show_ary = array();
- $value_ary = array();
- $cellKey = array(
- ‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’,’M’,
- ‘N’,’O’,’P’,’Q’,’R’,’S’,’T’,’U’,’V’,’W’,’X’,’Y’,’Z’,
- ‘AA’,’AB’,’AC’,’AD’,’AE’,’AF’,’AG’,’AH’,’AI’,’AJ’,’AK’,’AL’,’AM’,
- ‘AN’,’AO’,’AP’,’AQ’,’AR’,’AS’,’AT’,’AU’,’AV’,’AW’,’AX’,’AY’,’AZ’
- );
- //=====生成SHEET循环
- $objPHPExcel->createSheet();
- //设置活动SHEET
- $objPHPExcel->setActiveSheetIndex(0);
- //设置当前活动sheet的名称
- $objActSheet = $objPHPExcel->getActiveSheet();
- $objActSheet->setTitle(‘数据库表结构’);
- $objPHPExcel->getActiveSheet()->getColumnDimension(‘A’)->setWidth(10);//设置列宽度
- $objPHPExcel->getActiveSheet()->getColumnDimension(‘B’)->setWidth(30);//设置列宽度
- $objPHPExcel->getActiveSheet()->getColumnDimension(‘C’)->setWidth(30);//设置列宽度
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘A1′,’序号’);
- //设置column的border
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- //设置border的color
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getTop()->getColor()->setARGB(‘FF000000’);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getBottom()->getColor()->setARGB(‘FF000000’);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getLeft()->getColor()->setARGB(‘FF000000’);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getRight()->getColor()->setARGB(‘FF000000’);
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘B1′,’表名称’);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘C1′,’实体名’);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $i_js = 2;
- foreach($tb as $tb_name=>$v)
- {
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘A’.$i_js,$i_js);
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘B’.$i_js,$tb_name);
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue(‘C’.$i_js,”);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$i_js)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$i_js)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$i_js)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $i_js++;
- }
- $sheet_id = 1;
- foreach($tb as $tb_name=>$v)
- {
- $objPHPExcel->createSheet();
- //设置活动SHEET
- $objPHPExcel->setActiveSheetIndex($sheet_id);
- //设置当前活动sheet的名称
- $objActSheet = $objPHPExcel->getActiveSheet();
- $objActSheet->setTitle($tb_name);
- $objPHPExcel->getActiveSheet()->getColumnDimension(‘A’)->setWidth(30);//设置列宽度
- $objPHPExcel->getActiveSheet()->getColumnDimension(‘B’)->setWidth(30);//设置列宽度
- $objPHPExcel->getActiveSheet()->getColumnDimension(‘C’)->setWidth(30);//设置列宽度
- $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘A1′,’字段中文名’);
- $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘B1′,’字段名’);
- $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘C1′,’字段类型’);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C1’)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- //根据数据库表名取得数据库列名以及列信息
- $colnum_ary = $out_excel->show_columns($conn,$tb_name,$sql_type);
- //print_r($colnum_ary);
- $col_row = 2;
- foreach($colnum_ary as $c_k=>$c_line)
- {
- $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘A’.$col_row,$c_line[8]);
- $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘B’.$col_row,$c_line[0]);
- $objPHPExcel->setActiveSheetIndex($sheet_id)->setCellValue(‘C’.$col_row,$c_line[1]);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘A’.$col_row)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘B’.$col_row)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getTop()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getBottom()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getLeft()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $objPHPExcel->getActiveSheet()->getstyle(‘C’.$col_row)->getBorders()->getRight()->setBorderstyle(\PHPExcel_style_Border::BORDER_THIN);
- $col_row++;
- }
- $sheet_id++;
- }
- //exit;
- //=============================================================================
- ob_end_clean();//清除缓冲区,避免乱码
- header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’);
- header(‘Content-Disposition: attachment;filename="’.$out_file.’.xlsx"’);
- header(‘Cache-Control: max-age=0’);
- // If you’re serving to IE 9, then the following may be needed
- //header(‘Cache-Control: max-age=1’);
- // If you’re serving to IE over SSL, then the following may be needed
- //header (‘Expires: Mon, 26 Jul 1997 05:00:00 GMT’); // Date in the past
- header (‘Expires:0’); // Date in the past
- header (‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’).’ GMT’); // always modified
- header (‘Cache-Control: cache, must-revalidate’); // HTTP/1.1
- header (‘Pragma: public’); // HTTP/1.0
- $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
- $objWriter->save(‘php://output’);
- exit;
- ?>
复制代码