2015-01-19 2 views
0

Редактирование: я попытался изменить PHP_EOL на «\ n», попытался создать файл на сервере с помощью fputcsv, а затем загрузить его пользователю и попытался создать файл csv, используя этот подход:Создание файла csv для загрузки в moodle

 $callback = function() use ($grades) 
    { 
     $FH = fopen('php://output', 'w'); 
     $csv_headers = "Identifier,Email addres,Status,Grade,Scale,Grade can be changed,Last modified (submission),Last modified (grade),Feedback comments"; 
     fputcsv($FH,explode(',',$csv_headers)); 

     foreach ($grades as $grade) { 
      $moodle_stud_id = $grade->moodle_stud_id; 
      $points = $grade->grade; 
      $csv_line = "Participant ".$moodle_stud_id.",,,".$points.",,Yes,,,,"; 
      fputcsv($FH,explode(',',$csv_line)); 
     } 
     fclose($FH); 
    }; 
return Response::stream($callback, 200, $headers); 

все отдать тот же самый результат, файл обыкновение быть принят в Moodle, если я не открыть его на своем компьютере и сохранить его, какие-то идеи?

конца редактировать

Я использую веб-приложение с помощью рамки Laravel создать CSV-файл, который пользователь может скачать и использовать этот файл CAV, чтобы загрузить данные в другую систему - быть конкретным это CSV файл, содержащий оценки учащихся, которые будут загружены в moodle.

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

Но. если я загружу файл из своей системы, откройте его, сохраните его и закройте, а затем попытайтесь загрузить в moodle - тогда все отлично работает

любые идеи? это путь я создаю файл CSV:

$headers = array(
     'Content-Type' => 'csv', 
     'Content-Disposition' => 'attachment; filename="grades.csv"', 
    ); 
    $output = implode(",", array('Identifier', 'Email address', 'Status','Grade','Scale','Grade can be changed','Last modified (submission)','Last modified (grade)','Feedback comments')); 
    $output .= PHP_EOL; 
foreach ($grades as $grade) { 
    $output .= implode(",", array("Participant ".$moodle_stud_id,'','',$grade,'','Yes','','','','')); // append each row 
    $output .= PHP_EOL; 
} 
return Response::make($output, 200, $headers); 
+1

Первое, что приходит в голову, это конец символов линии. независимо от того, что вы открываете и сохраняете, может быть преобразование '\ n' в' \ r \ n' или что-то подобное. просто догадка. –

+0

do u означает PHP_EOL? –

+0

Просто мысль, но значения, возможно, должны быть заключены в кавычки. Возможно, попробуйте '$ output = '"'. Implode ('","', array (...)). '"';' Также установить кодировку в utf8 ''Content-Encoding' => 'UTF-8' ; ' –

ответ

0

ОК, проблема решена, открыв файл с помощью блокнота я заметил, что файл я создал был дополнительный Колум в конце каждой строки рядом из строка заголовков, которая была удалена при открытии и сохранении файла

Угадайте, что это за тип ошибки, я должен удалить вопрос?

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