PHP Excel удаляет пустые строки вверху

#php #mysql #excel

#php #mysql #excel

Вопрос:

Я использую PHP для экспорта данных из таблицы в электронную таблицу Excel. По какой-то причине вверху есть пустые строки.

введите описание изображения здесь

Как вы можете видеть на изображении выше, заголовки начинают печататься в строке 9, и, конечно, данные начинают печататься позже, то, что я не показывал.

Мой код работает и делает то, что мне нужно. Я просто пытаюсь понять, почему он печатает пустые строки вверху.

Вот код:

  <?php
   $ts = date('mdY-His');
   session_start();
   $where = $_SESSION['where'];  // this is the parameters passed from another file

   $sql = "SELECT * FROM mainTable WHERE " . $where . " ORDER BY CON_STATUS;";
   $result = mysql_query($sql) or die("<script language='javascript'>
                                       window.alert('There was no data to send')
                                       window.location.href='../home.php'
                                       </script>");
   header("Content-Type: application/xls");
   header("Content-Disposition: attachment; filename=importdetails-".$ts.".xls");
   header("Pragma: no-cache");
   header("Expires: 0");
   header("Content-Transfer-Encoding: binary");

   $sep = "t";
   for($i = 0; $i < mysql_num_fields($result); $i  )
   {
     echo mysql_field_name($result, $i) . "t";
   }
   print("n");
   while($row = mysql_fetch_row($result))
   {
     $schema_insert = "";
     for($j = 0; $j < mysql_num_fields($result); $j  )
     {
       if(!isset($row[$j]))
         $schema_insert .= "NULL".$sep;
       elseif ($row[$j] != "")
         $schema_insert .= "$row[$j]".$sep;
       else
         $schema_insert .= "".$sep;
     }
     $schema_insert = str_replace($sep."$", "", $schema_insert);
     $schema_insert = preg_replace("/rn|nr|n|r/", " ", $schema_insert);
     $schema_insert .= "t";
     print(trim($schema_insert));
     print "n";
   }
 ?>
 

Как указано, мой код работает, помимо печати пустых строк в верхней части таблицы. Если вы видите что-нибудь в моем коде, что удалит пустые строки, это было бы очень полезно.

Комментарии:

1. Во-первых, вы не должны использовать mysql_* функции — они устарели. Во-вторых, могу я предложить: phpexcel.codeplex.com — Это сделает вашу жизнь намного проще.

2. Вероятно, print » n»; этот бит добавляет пустые строки.

3. Что касается этой строки: for($j-0; $j < mysql_num_fields($result); $j ) — Ошибка при установке начального значения $ j, ‘-‘ должно быть ‘=’

4. Что касается этой строки: for($i = 0; $i < mysql_num_fields($results); $i ) — ошибка в написании ‘$results’ должно быть ‘$result’

Ответ №1:

Я не тестировал это, но мне кажется, что это проблема с вашей строкой

 for($j-0; $j < mysql_num_fields($result); $j  )
 

Обратите внимание, что вы не устанавливаете $j=0 , а вычитаете 0 из $j

Комментарии:

1. Извините. Это была опечатка. Исправляем это сейчас.