2014-11-10 6 views
0

Pls, пусть кто-то поможет мне с этим кодом. Когда я экспортирую, он экспортирует файл, но начинается с строки2, первая строка исключена. Это выглядит как заголовок, затем строка2,3,4 до конец строки.Экспорт Excel из таблицы Mysql

<?php 
     require_once("/includes/session.php"); 
     require_once("/includes/db_connection.php"); 
     require_once("/includes/functions.php"); 
     // Table Name that you want 
     // to export in csv 
     $ShowTable = "staff_tab"; 
     $today=date("dmY"); 
     $FileName = "StaffRecord".$today.". csv"; 
     $file = fopen($FileName,"w"); 

     $sql = mysqli_query($connection,("SELECT * FROM $ShowTable LIMIT 500")); 
     $row = mysqli_fetch_assoc($sql); 
     // Save headings alon 
     $HeadingsArray=array(); 
     foreach($row as $name => $value){ 
     $HeadingsArray[]=$name; 
     } 
     fputcsv($file,$HeadingsArray); 
     // Save all records without headings 

     while($row = mysqli_fetch_assoc($sql)){ 
     $valuesArray=array(); 
     foreach($row as $name => $value){ 
     $valuesArray[]=$value; 
     } 
     fputcsv($file,$valuesArray); 
     } 
     fclose($file); 

     header("Location: $FileName"); 

     echo "Complete Record saves as CSV in file: <b style=\"color:red;\">$FileName</b>"; 
     ?> 

ответ

0

Ваш призыв к $row = mysqli_fetch_assoc($sql); толкает внутренний указатель вперед к строке 2. Используйте mysqli_data_seek($sql, 0);, чтобы подтолкнуть его обратно к старту. http://php.net/manual/en/function.mysql-data-seek.php

... 
    $sql = mysqli_query($connection,("SELECT * FROM $ShowTable LIMIT 500")); 
    $row = mysqli_fetch_assoc($sql); 
    mysqli_data_seek($sql, 0);   // return pointer to first row 
    // Save headings alon 
    $HeadingsArray=array(); 
    ... 
+0

@harold, спасибо, но заголовок теперь отсутствует, когда я использовал mysqli_data_seek ($ sql, 0). Что я могу сделать, чтобы убедиться, что все заголовки и строки получены и завершены? –

0

может быть, это может помочь, так как это будет включать в себя все строки и установить заголовки из заголовков БД. Это также принудительно загрузило файл, не покидая страницу.

$export = mysqli_query ($query) or die ("Sql error : " . mysqli_error()); 

// extract the field names for header 
$fields = mysqli_num_fields ($export); 

for ($i = 0; $i < $fields; $i++) 
{ 

    $headers = mysqli_fetch_field($export); 
    $header .= $headers->name. "\t"; 
} 

// export data 
while($row = mysqli_fetch_row($export)) 
{ 
    $line = ''; 
    foreach($row as $value) 
    { 
     if ((!isset($value)) || ($value == "")) 
     { 
      $value = "\t"; 
     } 
     else 
     { 
      $value = str_replace('"' , '""' , $value); 
      $value = '"' . $value . '"' . "\t"; 
     } 
     $line .= $value; 
    } 
    $data .= trim($line) . "\n"; 
} 
$data = str_replace("\r" , "" , $data); 

if ($data == "") 
{ 
    $data = "\nNo Record(s) Found!\n"; 
} 

// allow exported file to download forcefully 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=Something.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print "$header\n$data"; 
+0

оценит ваш ответ: mysqli_field_name - функция, так как это вызывает ошибку: вызов неопределенной функции mysqli_field_name() в C: \ wamp \ www \ Mikemedics \ exportFile.php в строке 17 –

+0

Просто замените его на MySQL вместо mysqli, но он будет работать, но mysql isddpit –

+0

Я отредактировал его для вас, теперь он должен работать –