Вставить столбец как строку из Excel в MySQL, используя Phpspreadsheet - PullRequest
0 голосов
/ 06 ноября 2019

Не уверен, как отформатировать заголовок. простите меня.
Я использую PhpSpreadsheet до INSERT столбец Excel в базе данных MySql.

Что у меня есть

enter image description here

Что я попробовал

...

$activeSheet = $spreadsheet->getActiveSheet();
$sheetData = $activeSheet->toArray();

foreach($sheetData as $row) {
    $col1 = $row[0];

    $sql = "INSERT INTO rowascol (n1) VALUES ($col1)";
    $query = mysqli_query($con, $sql);
}

...

Что я получил

+----+----+----+----+----+----+
| id | n1 | n2 | n3 | n4 | n5 |
+----+----+----+----+----+----+
|  1 |  4 |    |    |    |    |
|  2 |  6 |    |    |    |    |
|  3 | 45 |    |    |    |    |
|  4 |  5 |    |    |    |    |
|  5 |  7 |    |    |    |    |
+----+----+----+----+----+----+

Что я хочу

+----+----+----+----+----+----+
| id | n1 | n2 | n3 | n4 | n5 |
+----+----+----+----+----+----+
|  1 |  4 |  6 | 45 |  5 |  7 |
|  2 |  9 |  3 |  5 |  8 | 12 |
+----+----+----+----+----+----+

1 Ответ

2 голосов
/ 06 ноября 2019

Этот фрагмент кода ниже может помочь:

...

$highestColumn= ord($activeSheet->getHighestColumn())- ord('A') + 1;

for ($col = 0; $col < $highestColumn; $col++) {
    $col1 = array();
    foreach($sheetData as $row) {
        array_push($col1, $row[$col]);
    }
    $col1 = implode(',', $col1);

    $col1 = $col + 1 . ',' . $col1;  // add id
    $sql = "INSERT INTO rowascol VALUES ($col1)";
    // echo $sql;
    $query = mysqli_query($con, $sql);
}

...
...