Редактирование данных в XLS с помощью PHP, а затем импорт в MySQL
Я пытаюсь импортировать файл XLS в PHP, где я могу затем отредактировать информацию и импортировать ее в MySQL. Я никогда не делал ничего, связанного с этим, поэтому мне трудно понять, как к этому подойти.
Я просмотрел несколько проектов с открытым исходным кодом:
- Программа чтения PHP Excel
- Отличное чтение
- PHPExcel
Ни один из этих вариантов не идеально подходит для того, что я хочу сделать, или, может быть, я просто недостаточно глубоко изучил документация.
Есть некоторые вещи, которые необходимо принять во внимание. Файл XLS не может быть преобразован в какой-либо другой формат файла. Это делается для облегчения доступа для нетехнических пользователей. Файл XLS - это отчет, созданный на другом веб-сайте, который каждый раз будет иметь один и тот же формат (столбцы). Например, каждый файл XLS с одинаковым количеством столбцов (это будет A1):
*ID |Email |First Name |Last Name |Paid |Active |State |Country|*
Но в файле XLS больше столбцов, чем должно быть импортирован в базу данных. Например, импортируемые строки (это будет A1):
*ID |Email |First Name |Last Name |Country*
Я знаю, что одним из двух способов редактирования данных будет A. Используйте что-то вроде PHPExcel для чтения данных, отредактируйте их, а затем отправьте в базу данных или B. Используйте что-то вроде PHPExcel для преобразования XLS в CSV, выполните необработанный импорт во временную таблицу, отредактируйте данные и вставьте их в старую таблицу.
Я прочитал много документации PHPExcel, но в ней нет ничего об импорте в база данных, и я даже не знаю, с чего начать редактирование XLS до или после импорта.
Я прогуглил много ключевых слов и в основном нашел результаты о том, как читать/писать/просматривать XLS. Я ищу совета о том, как лучше всего сделать все это в наименьших и простых шагах.
1 answers
Смотрите эту статью об использовании PHP-excelreader, в частности короткий раздел под названием "Поворот таблиц".
Любое ваше решение в конечном итоге будет выглядеть так:
- Прочитать строку из XLS (требуется устройство чтения XLS)
- Измените данные из строки так, как это необходимо для вашей базы данных.
- Вставьте измененные данные в базу данных.
Похоже, у вас есть эта фиксация на "Редактировании данных". Это просто PHP - вы получаете значение из XLS читатель, измените его с помощью PHP-кода, а затем вставьте в базу данных. Там нет промежуточного файла, вы не изменяете XLS - это просто PHP.
Это супер-простой, непроверенный пример внутреннего цикла программы, которую вам нужно написать. Это просто для иллюстрации общей картины.
$colsYouWant = array(1,2,3,4,8);
$sql = 'INSERT INTO data (id, email, fname, lname, country) VALUES (?,?,?,?,?)';
$stmt = $pdo->prepare($sql);
$sheet = $excel->sheets[0];
// the excel reader seems to index by 1 instead of 0: be careful!
for ($rowindex=2; $rowindex <= $sheet['numRows']; $rowindex++) {
$xlsRow = $sheet['cells'][$rowindex];
$row = array();
foreach ($colsYouWant as $colindex) {
$row[] = $xlsRow[$colindex];
}
// now let's "edit the row"
// trim all strings
$row = array_map('trim', $row);
// convert id to an integer
$row[0] = (int) $row[0];
// capitalize first and last name
// (use mb_* functions if non-ascii--I don't know spreadsheet's charset)
$row[2] = ucfirst(strtolower($row[2]));
$row[3] = ucfirst(strtolower($row[3]));
// do whatever other normalization you want to $row
// Insert into db:
$stmt->execute($row);
}