2015-04-12 3 views
0

Я пытаюсь получить данные из таблицы mysql и выводить в один файл excel. Данные должны появляться бок о бок.Экспорт данных mysql из двух таблиц в excel с использованием php и phpexcel

Но выходной файл excel содержит только специальные символы вместо данных mysql. Пожалуйста, направьте меня в правильном направлении.

Вот мой код:

<?php 
    // connection with the database 
    $dbhost = "localhost"; 
    $dbuser = "root"; 
    $dbpass = "redhat"; 
    $dbname = "was"; 

    mysql_connect($dbhost,$dbuser,$dbpass); 
    mysql_select_db($dbname); 

    // require the PHPExcel file 
    require 'phpexcel/Classes/PHPExcel.php'; 
    //$q2 = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = ".$dbname.""; 
    $sql = "SHOW TABLES"; $res = mysql_query($sql); $num_tables = mysql_num_rows($res); 
    $table = $num_tables; 
    $i = 1; 
    echo $i; 
    echo $table; 
    // write all table names with a variable value like table1 table2 table3 
    // simple query 
    while($i <= $table){ 
     //$query = "SELECT servicedate,recdate,dostoreclag,casesrec,scandate,casesentered,casespending,casecountdiff,entrydate,rcvdtolag FROM hos1report ORDER by id DESC"; 
     $query = "SELECT servicedate,recdate,dostoreclag,casesrec,scandate,casesentered,casespending,casecountdiff,entrydate,rcvdtolag FROM hos".$i."report"; 
     $headings = array('Service Date','Rec. Date','DOS to Rec. Lag','Cases Rec.','scan Date','Cases Entered','Cases Pending','Cases Count Diff','Entry Date','Rec. to Entry Lag'); 

     if ($result = mysql_query($query) or die(mysql_error())) { 
      // Create a new PHPExcel object 
      $objPHPExcel = new PHPExcel(); 
      $objPHPExcel->getActiveSheet()->setTitle('Report'); 

      $rowNumber = 8; 
      if ($i == 1) { 
       $col = 'A'; 
      } elseif ($i == 2) { 
       $col = 'L'; 
      } 
      // $col = 'A'; 
      foreach($headings as $heading) { 
       $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading); 
       $col++; 
      } 

      // Loop through the result set 
      $rowNumber = 9; 
      while ($row = mysql_fetch_row($result)) { 
       if ($i == 1) { 
        $col = 'A'; 
       } elseif ($i == 2) { 
        $col = 'L'; 
       } 
       // $col = 'A'; 
       //  $col = 'A'; 
       foreach($row as $cell) { 
        $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell); 
        $col++; 
       } 
       $rowNumber++; 

      } 
      // Freeze pane so that the heading line won't scroll 

      $objPHPExcel->getActiveSheet()->freezePane('A2'); 
      // Save as an Excel BIFF (xls) file 
      $i++; 
     } 
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 

     header('Content-Type: application/vnd.ms-excel'); 
     header('Content-Disposition: attachment;filename="report.xls"'); 
     header('Cache-Control: max-age=0'); 
    } 

    $objWriter->save('php://output'); 
    exit(); 
    echo 'a problem has occurred... no data retrieved from the database'; 

?> 

ответ

0

Попробуйте этот код:

<?php 
    // connection with the database 
    $dbhost = "localhost"; 
    $dbuser = "root"; 
    $dbpass = "redhat"; 
    $dbname = "was"; 

    mysql_connect($dbhost,$dbuser,$dbpass); 
    mysql_select_db($dbname); 

    // require the PHPExcel file 
    require 'phpexcel/Classes/PHPExcel.php'; 
    //$q2 = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = ".$dbname.""; 
    $sql = "SHOW TABLES"; $res = mysql_query($sql); $num_tables = mysql_num_rows($res); 
    $table = $num_tables; 
    $i = 1; 
    echo $i; 
    echo $table; 
    // write all table names with a variable value like table1 table2 table3 
    // simple query 
    while($i <= $table){ 
     //$query = "SELECT servicedate,recdate,dostoreclag,casesrec,scandate,casesentered,casespending,casecountdiff,entrydate,rcvdtolag FROM hos1report ORDER by id DESC"; 
     $query = "SELECT servicedate,recdate,dostoreclag,casesrec,scandate,casesentered,casespending,casecountdiff,entrydate,rcvdtolag FROM hos".$i."report"; 
     $headings = array('Service Date','Rec. Date','DOS to Rec. Lag','Cases Rec.','scan Date','Cases Entered','Cases Pending','Cases Count Diff','Entry Date','Rec. to Entry Lag'); 

     if ($result = mysql_query($query) or die(mysql_error())) { 
      // Create a new PHPExcel object 
      $objPHPExcel = new PHPExcel(); 
      $objPHPExcel->getActiveSheet()->setTitle('Report'); 

      $rowNumber = 8; 
      if ($i == 1) { 
       $col = 'A'; 
      } elseif ($i == 2) { 
       $col = 'L'; 
      } 
      // $col = 'A'; 
      foreach($headings as $heading) { 
       $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading); 
       $col++; 
      } 

      // Loop through the result set 
      $rowNumber = 9; 
      while ($row = mysql_fetch_row($result)) { 
       if ($i == 1) { 
        $col = 'A'; 
       } elseif ($i == 2) { 
        $col = 'L'; 
       } 
       // $col = 'A'; 
       //  $col = 'A'; 
       foreach($row as $cell) { 
        $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell); 
        $col++; 
       } 
       $rowNumber++; 

      } 
      // Freeze pane so that the heading line won't scroll 

      $objPHPExcel->getActiveSheet()->freezePane('A2'); 
      // Save as an Excel BIFF (xls) file 
      $i++; 
     } 
     // $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 

     // header('Content-Type: application/vnd.ms-excel'); 
     // header('Content-Disposition: attachment;filename="report.xls"'); 
     // header('Cache-Control: max-age=0'); 

    } 
     // Instantiate a Writer to create an OfficeOpenXML Excel .xlsx file 
     $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
     // Write the Excel file to filename some_excel_file.xlsx in the current directory 
     $objWriter->save('some_excel_file.xlsx'); 


    // $objWriter->save('php://output'); 
    exit(); 
    echo 'a problem has occurred... no data retrieved from the database'; 
?> 

Надеется, что это хорошо работать ... :)

+0

PHP Фатальной ошибка: неперехваченное исключение 'PHPExcel_Writer_Exception' с сообщением 'Не удалось закрыть zip-файл some_excel_file.xlsx.' в /var/www/html/phpexcel/Classes/PHPExcel/Writer/Excel2007.php:399\nStack trace: \ n # 0 /var/www/html/pj.php(75): PHPExcel_Writer_Excel2007-> save ('some_excel_file ... ') \ n # 1 {main} \ n выбрасывается в /var/www/html/phpexcel/Classes/PHPExcel/Writer/Excel2007.php в строке 399 – PeeJay

+0

Мне что-то не хватает, поставьте этот '$ objWriter = new PHPExcel_Writer_Excel2007 ($ objPHPExcel); $ objWriter-> save ('some_excel_file.xlsx'); 'out your while loop. –

+0

} // Создайте экземпляр Writer для создания файла .xlsx OfficeOpenXML Excel. $ objWriter = new PHPExcel_Writer_Excel2007 ($ objPHPExcel); // Запись файла Excel в имя файла some_excel_file.xlsx в текущем каталоге $ objWriter-> save ('some_excel_file.xlsx'); // $ objWriter-> save ('php: // output'); exit(); echo 'возникла проблема ... нет данных, полученных из базы данных'; ?> Это не работает ни – PeeJay

Смежные вопросы