【解決方法】PHP で Excel を HTML として表示する

プログラミングQA


やあ
ユーザーがExcelファイルをアップロードできるフォームをphpで作成します。
ファイルが Excel でない場合は、正しいファイルをアップロードするようユーザーに求めるメッセージが表示されます
それ以外の場合、phpでExcelをhtmlの表として表示します。
私の問題はこれです
「致命的なエラー: C:\Users\meeting room\Downloads\PHPExcel-1.8\PHPExcel-1.8\Classes\PHPExcel\Shared\String.php 行 526 で、中かっこを使用した配列および文字列オフセット アクセス構文はサポートされなくなりました」

これは何ですか、どうすれば解決できますか。

<body>
      <form action="" method="post" enctype="multipart/form-data">
        <label for="excel-file"><h2>Ανέβασε το αρχείο σου:</h2></label>
        <input type="file" name="excel-file" id="excel-file">
        <input type="submit" value="Upload">
      </form>


<?php
    require_once '/Users/Downloads/PHPExcel-1.8/PHPExcel-1.8/Classes/PHPExcel.php';

    if(isset($_FILES['excel-file'])) {
      $file_name = $_FILES['excel-file']['name'];
      $file_size = $_FILES['excel-file']['size'];
      $file_tmp = $_FILES['excel-file']['tmp_name'];
      $file_type = $_FILES['excel-file']['type'];

      $allowed_extensions = array('xls', 'xlsx');
      $file_ext = pathinfo($file_name, PATHINFO_EXTENSION);

      if(in_array($file_ext, $allowed_extensions) === false){
        echo '<div class="text1">Error: Μόνο excel αρχεία επιτρέπονται</div>';
      } else {
        move_uploaded_file($file_tmp, "/Users/Desktop/upload/".$file_name);
        if (file_exists("/Users/Desktop/upload/".$file_name)) {
          echo '<div class="text2">Το αρχείο ανέβηκε με επιτυχία</div>';


                $objReader = PHPExcel_IOFactory::createReaderForFile("/Users/Desktop/upload/".$file_name);
                $objPHPExcel = $objReader->load("/Users/Desktop/upload/".$file_name);

                    $worksheet = $objPHPExcel->getActiveSheet();

                    $highest_row = $worksheet->getHighestRow();
                    $highest_column = $worksheet->getHighestColumn();

                    echo '<table border="1">';
                    for ($row = 1; $row <= $highest_row; $row++) {
                    echo '<tr>';
                    for ($col = 'A'; $col <= $highest_column; $col++) {
                        $cell_value = $worksheet->getCell($col.$row)->getValue();
                        echo '<td>'.$cell_value.'</td>';
                    }
                    echo '</tr>';
                }
                echo '</table>';
        }
      }
    }
?>
</body>

私が試したこと:

私はグーグルで検索した
私を助ける何かが見つからない

解決策 1

コーディング中に毎日、おそらく 1 日に何度も構文エラーが発生することを予期する必要があります。経験の豊富さに関係なく、誰もがそうです。 変数やキーワードのスペルを間違えることがあります。 文字列やコード ブロックを閉じるのを忘れることがあります。 猫があなたのキーボードの上を歩いて、とても奇妙なことをタイプすることがあります。 メソッド呼び出しに必要なパラメーターの数を忘れてしまうことがあります。

我々はすべての間違いを犯します。

そして、私たちは皆そうしているので、構文エラーを修正する必要があります。他の人が修正してくれるのを待つよりも、方法を学んで自分で修正する方がはるかに迅速です! したがって、エラー メッセージの読み方と、コンパイラが間違っていると言っていることに照らして記述されたコードを解釈する方法を学ぶことに少し時間を費やしてください。

そして、526 番の行がどこにあるのかわからず、コードにアクセスして作業を開始する方法がないため、修正を支援するために私たちができることは何もありません!

だからこれを読んでください: 問題を解決するコードの書き方、初心者向けガイド パート 2: 構文エラー[^] – それは、あなた自身で問題を解決するのに役立つか、少なくとも助けを得るために私たちに何を伝えなければならないかを知るのに役立つはずです.

解決策 2

エラーはサードパーティのライブラリから発生しています。 そのプロジェクトのホームページを読むと、次のように表示されます。

PHPExcel-デッド

PHPExcel の最終バージョン 1.8.1 は 2015 年にリリースされました。このプロジェクトは 2017 年に正式に廃止され、2019 年に永久にアーカイブされました。

プロジェクトは何年も維持されておらず、もう使用してはなりません。 すべてのユーザーは、直接の後継者に移行する必要があります Phpスプレッドシート[^]、または別の代替手段。

プロジェクト コマンドと同様に、PhpSpreadsheet に移行します。このライブラリは現在も積極的に維持されており、PHP 7.4 以降をサポートしています。

解決策 3

コメント

タイトルとURLをコピーしました