Редактирование данных в 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. Я ищу совета о том, как лучше всего сделать все это в наименьших и простых шагах.

Author: Carrie Kendall, 2012-02-01

1 answers

Смотрите эту статью об использовании PHP-excelreader, в частности короткий раздел под названием "Поворот таблиц".

Любое ваше решение в конечном итоге будет выглядеть так:

  1. Прочитать строку из XLS (требуется устройство чтения XLS)
  2. Измените данные из строки так, как это необходимо для вашей базы данных.
  3. Вставьте измененные данные в базу данных.

Похоже, у вас есть эта фиксация на "Редактировании данных". Это просто 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);
}
 2
Author: Francis Avila, 2012-02-03 20:35:39