Сохранение сгенерированного файла Excel на сервер с использованием PHP - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь сохранить созданный лист Excel на сервере.Его сохранение, но лист Excel пуст.Я использую следующий код.

$sql = "select name, email from agencies";

$result = mysqli_query($conn, $sql);
$resultRows = mysqli_fetch_assoc($result);    

if($resultRows>0){
$sep = "\t"; //tabbed character

//while($rowheading = mysqli_fetch_field($result)) { echo $rowheading->name . $sep; }
while($finfo = $result->fetch_field())
{
  printf($finfo->name . $sep);
}

print("\n");
while($row = mysqli_fetch_row($result)){
    $schema_insert = "";
    for($j=0; $j<mysqli_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("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
    $schema_insert .= "\t"; 
    print(trim(str_replace(',', " ", $schema_insert)));
    print "\n";
}


    file_put_contents('/var/www/html/myfiles/public/core/enquiry_mail_sms/file/Report.xls', $schema_insert);
}

mysqli_close($conn);

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

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

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

Чтобы избежать этого, переместите file_put_contents() вне цикла

$sql = "select name, email from agencies";

$result = mysqli_query($conn, $sql);
$resultRows = mysqli_fetch_assoc($result);    

if($resultRows>0){
$sep = "\t"; //tabbed character

//while($rowheading = mysqli_fetch_field($result)) { echo $rowheading->name . $sep; }
while($finfo = $result->fetch_field())
{
  printf($finfo->name . $sep);
}

print("\n");
$excelContent = '';
while($row = mysqli_fetch_row($result)){
    $schema_insert = "";
    for($j=0; $j<mysqli_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("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
    $schema_insert .= "\t";
    $excelContent .= $schema_insert

    print(trim(str_replace(',', " ", $schema_insert)));
    print "\n";
}


    file_put_contents('/var/www/html/myfiles/public/core/enquiry_mail_sms/file/Report.xls', $excelContent);
}

mysqli_close($conn);
0 голосов
/ 14 ноября 2018

Из документов (выделено мной):

Если filename не существует, файл создается.В противном случае существующий файл будет перезаписан, если только не установлен флаг FILE_APPEND .

(Предполагается, что вы действительно имеете в виду, что вы получаете только последнюю запись, а не первый .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...