Слишком много одного столбца таблицы в загруженном документе Excel в PHP - PullRequest
0 голосов
/ 06 мая 2020

Я создал сценарий, в который вы можете вставить документ Excel, и он будет отображаться в виде таблицы на веб-сайте. Но есть одна ошибка: между каждым загруженным столбцом таблицы есть дополнительный столбец.

Это мой пример файла Excel: Файл примера Excel

А это мой вывод в браузере , если я загружаю документ Excel, где вы видите, что столбца слишком много: Browser-Output Я отметил лишние столбцы, которых слишком много, когда вы сравниваете вывод с файлом, вы можете видеть что в исходном файле файл не пустой столбец между словами.

Это код, который я использую (я также использую PHPExcel), таблица создается в двух циклах foreach:

-------------------------------- индекс. php ------------- --------------------

    <?php
  require_once 'Classes/PHPExcel/IOFactory.php';

  if (isset($_FILES['excelFile']) && !empty($_FILES['excelFile']['tmp_name']))
  {
     $excelObject = PHPExcel_IOFactory::load($_FILES['excelFile']['tmp_name']);
     $getSheet = $excelObject->getActiveSheet()->toArray(null);

     echo "<table>";
     $rundeAnzahl = 0;
     foreach ($getSheet as  $zeile) {
         echo "<tr>";

         $x = 0;
         foreach ($getSheet as $item)
         {
           echo "<td>". @$getSheet[$rundeAnzahl][$x] . "<td>";
           $x = $x + 1;
         }
         echo "</tr>";
         $rundeAnzahl += 1;
     }
  }

 ?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Excel Tabelle</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <form class="" action="" method="post" enctype="multipart/form-data">
        <input type="file" name="excelFile" value="">
        <input type="submit" name="" value="Submit">
    </form>
  </body>
</html>

Не могли бы вы помочь мне и узнать, почему появляется этот дополнительный столбец?

1 Ответ

0 голосов
/ 06 мая 2020

В вашем внутреннем foreach вы никогда не закрываете <td>, а вместо этого создаете другой столбец. Измените его на:

foreach ($getSheet as $item) {
    echo "<td>". @$getSheet[$rundeAnzahl][$x] . "</td>";
    $x = $x + 1;
}
...