php spreadsheet 이용오류 채택완료

4년 전 조회 1,910

php spreadsheet 를 이용하여 엑셀 파일을 읽고 작성하려고 합니다. ㅠㅠ 근데 

 

use PhpOffice\PhpSpreadsheet\Spreadsheet; 이부분에서 오류가 나는데 이유를 모르겠습니다...ㅠㅠ 

 

require은 $_SERVER[도큐먼트 루트] 도사용해보고

  require "../phpoffice_phpspreadsheet_1.10.1.0_require/vendor/autoload.php"; 요런식으로도 가져와 보았으며 폴더들은 정상적으로 위치해 있습니다 ㅠㅠ 왜 여기에 오류가 난걸까요 ㅠ 

아래는 코드이며 사진도 함께 첨부하겠습니다. 

Copy
session_start();

 

require "../phpoffice_phpspreadsheet_1.10.1.0_require/vendor/autoload.php";

include_once 'db_conn.php';

if ($_POST['hidden_code'] == 3) {

 

session_start();



 

use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Reader\Xlsx;

 

$server_inputFileName=$_FILES['inputFileName']['tmp_name'];

 

$pc_FileName = $_FILES['inputFileName']['name'];

$file_type= pathinfo($pc_FileName, PATHINFO_EXTENSION);

 

if ($server_inputFileName) {

   

    /** Create a new Excel File Reader  **/

    if ($file_type =='xls') {

        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();  

    }

    elseif ($file_type =='xlsx') {

        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();

    }

    else {

        echo '처리할 수 있는 엑셀 파일이 아닙니다';

        exit;

    }

 

    //    확장자에 따른 설정 구분

    //    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();

    //    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods();

    //    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();

    //    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Gnumeric();

    //    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();

   

    /** Load $server_inputFileName to a Spreadsheet Object  **/

    $spreadsheet = $reader->load($server_inputFileName);

   

    $spreadData = $spreadsheet-> getActiveSheet()->toArray();

   

    $rows=count($spreadData);

    $cols=(count($spreadData,1)/count($spreadData))-1;

   

    echo '<table border="1" style="width:100%">';  

    for ($i=0;$i<$rows;$i++) {

        echo '<tr>';

        for ($j=0;$j<$cols;$j++) {          

            if ($j==1 and $i>0) {

                echo '<td nowrap>'.$spreadData[$i][$j].'</td>';

            } else {

                echo '<td nowrap align="center">'.$spreadData[$i][$j].'</td>';

            }

        }

        echo '</tr>';      

    }  

    echo '</table>';

 

3696776125_1636016230.009.png

 

3696776125_1636016320.532.png

답변 1개

채택된 답변
+20 포인트
require "../phpoffice_phpspreadsheet_1.10.1.0_require/vendor/autoload.php";

이부분은 아무래도 폴더명을 다시 한번 짧게해서 써주세요 

phpspreadsheet 라고 하시던지.. 너무 길어서 헷갈릴수있구요 그리고 외부에 ../ 경로가 맞는지도 확인해보세요

폴더가 있는지.. 루트 외부에 폴더가 있는지를..

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

모두다 확인해봤구 ㅠㅠ 그 vscode ../ 쓰면 해당 폴더에 어떤걸 참조할 수 있는지 나오거든요.. 제가 작성한게아니라 그거로도 해보았구요,... 왜 use 가안될까요 흑
아 ... use 를 if문 안에 써서 이러는군요 ㅠㅠ 몰랐습니다... 감사합니당
require 를 했을때 임포트는 됐다고 하는거죠? 그럼 require_once 로 바꿔주세요
use 같은경우는 앞에 백슬래시를 추가해보세요

[code]
use \PhpOffice\PhpSpreadsheet\Spreadsheet;
[/code]
아.. 그러셨군요 ㅋㅋㅋ 전또 될건데 뭐가 문제 인가 ㅋㅋㅋ 혹시나 이방법을 하면 되지 않을까 했는데 잘못 쓰셨나보군요 ㅋㅋ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고