В Excel есть функция, которая называется «Вставить специальные -> пропустить пустые ячейки» .. и, по сути, это позволяет вам брать два CSV, каждый из которых содержит одинаковые столбцы, и вставлять разные данные в электронную таблицу безперезапись существующих данных.Мне нужно попытаться повторить это в PHP.
У меня есть 3 машины, каждая из которых используется для проверки студента на разных этапах экзамена.Машина 1 будет иметь столбец данных, такой как «имя = Адам, экзамен1 = проход, экзамен2 = ноль, экзамен3 = ноль».Машина 2 будет иметь «имя = Адам, экзамен1 = ноль, экзамен2 = проход, экзамен3 = ноль», и машина 3, как вы можете догадаться, будет «имя = Адам, экзамен1 = ноль, экзамен2 = ноль, экзамен3 = проход».Теперь в Excel я могу просто скопировать вставить машину 1 в машину 2, используя «пропустить пустое», и это приведет к «имя = Адам, экзамен1 = проход, экзамен2 = проход, экзамен3 = ноль».Затем скопируйте новый файл с компьютера 2 на компьютер 3, и он даст мне полный результат для студентов: «имя = Адам, экзамен1 = сдача, экзамен2 = сдача, экзамен3 = сдача».Однако мне приходится делать это на 10-15 машинах.Я хотел бы найти способ автоматизировать это.
Я пытался использовать этот код в моем блейде:
<label for="exampleFormControlFile1">CSV Upload</label>
<input type="file" name="csv_import[]" class="form-control-file" id="exampleFormControlFile1">
<br/><br/>
<label for="exampleFormControlFile2">CSV Upload</label>
<input type="file" name="csv_import[]" class="form-control-file" id="exampleFormControlFile2">
<br/><br/>
<input type='submit' name='submit' value='Import' class="btn btn-primary">
Вот мой контроллер:
public function combineCSV(Request $request){
$csv = request('csv_import');
for($i = 0; $i < 3; $i++){
$path = $request->file($csv[0])->store('excel-files');
$products = (new FastExcel)->import($request->file($path), function ($line) {
$student = Student::where('student_id', $line->student_id)->first();
});
}
}
Я знаю, что это очень неправильно (очевидно, потому что яполучаю ошибки).Но я еще не знаком с CSV или манипулированием файлами.Я пытаюсь использовать пакет FastExcel на github для laravel, без особой причины.Если есть лучший пакет, я полностью использую его.Но как я могу загрузить более одного файла, отсканировать каждую строку за строкой и сказать «если exam1 == null && csv-> exam1 == null, продолжить, иначе, если exam1 == null && csv-> exam1 == pass, updateзапись».