테스트 사이트 - 개발 중인 베타 버전입니다

phpspreadsheet 쓰기 질문 채택완료

많은도움필요 3년 전 조회 2,889

sql에 담겨있는 데이터를 엑셀파일로 쓰려고 하고 있습니다. 

 

그래서 간단하게 일단 엑셀파일을 작성하는 코드를 가져와서 작업하고 있는데 

 

 

Fatal error: Uncaught Error: Class "ZipStream\Option\Archive" not found in C:\xampp\htdocs\study\ranking_checker\php\PhpOffice\PhpSpreadsheet\Writer\Xlsx.php:508 Stack trace: #0 C:\xampp\htdocs\study\ranking_checker\php\excel_output.php(53): PhpOffice\PhpSpreadsheet\Writer\Xlsx->save('files/demo.xlsx') #1 {main} thrown in C:\xampp\htdocs\study\ranking_checker\php\PhpOffice\PhpSpreadsheet\Writer\Xlsx.php on line 508

라는 에러가 떳습니다 ㅠㅠ zipstream을 찾을수 없다는거 같은데 보니까 composer 가 없어서 그런거라고 하더라구요.. 

 

제가 cafe24에 업로드할 자료라서 composer가 없이 진행하고 있고 

 

https://duotone.co.kr/entry/composer-%EC%97%86%EB%8B%88-phpspreadsheet-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0  

 

해당 블로그를 통해서 엑셀파일을 읽어와서 웹페이지에 뿌려주는 것까지는 됬습니다.. 

그말은 컴포저가 없어도 된다는 거같은데 쓰는건 왜 안될까요 ㅠㅠ 일단 제 코드를 보여드리겠습니다. 

 

</p>

<p><?php</p>

<p> </p>

<p>require_once(__DIR__ . '/PhpOffice/Psr/autoloader.php');</p>

<p>require_once(__DIR__ . '/PhpOffice/PhpSpreadsheet/autoloader.php');</p>

<p> </p>

<p>ini_set("display_errors", 1);</p>

<p>ini_set('memory_limit', -1); // 메모리 제한을 해제해준다.</p>

<p>

 </p>

<p>use PhpOffice\PhpSpreadsheet\Spreadsheet;</p>

<p>use PhpOffice\PhpSpreadsheet\Writer\Xlsx;</p>

<p> </p>

<p>// Creates New Spreadsheet</p>

<p>$spreadsheet = new Spreadsheet();</p>

<p> </p>

<p>// Retrieve the current active worksheet</p>

<p>$sheet = $spreadsheet->getActiveSheet();</p>

<p> </p>

<p>// sample data from db</p>

<p>// call the db get data function here</p>

<p>//delete line from 18 to 20 and call the db function</p>

<p>$data_from_db = array();</p>

<p>$data_from_db[0] = array("name" => "raja", "age" => 23);</p>

<p>$data_from_db[1] = array("name" => "raja1", "age" => 43);</p>

<p> </p>

<p>//set column header</p>

<p>//set your own column header</p>

<p>$column_header = ["Name", "Age"];</p>

<p>$j = 1;</p>

<p>foreach ($column_header as $x_value) {</p>

<p>    $sheet->setCellValueByColumnAndRow($j, 1, $x_value);</p>

<p>    $j = $j + 1;</p>

<p>}</p>

<p> </p>

<p>//set value row</p>

<p>for ($i = 0; $i < count($data_from_db); $i++) {</p>

<p> </p>

<p>    //set value for indi cell</p>

<p>    $row = $data_from_db[$i];</p>

<p> </p>

<p>    $j = 1;</p>

<p> </p>

<p>    foreach ($row as $x => $x_value) {</p>

<p>        $sheet->setCellValueByColumnAndRow($j, $i + 2, $x_value);</p>

<p>        $j = $j + 1;</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>// Write an .xlsx file  </p>

<p>$writer = new Xlsx($spreadsheet);</p>

<p> </p>

<p>// Save .xlsx file to the files directory</p>

<p>$writer->save('files/demo.xlsx');</p>

<p> </p>

<p> </p>

<p>

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

답변 1개

채택된 답변
+20 포인트

해당 폴더 퍼미션 확인해 보세요.

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

답변에 대한 댓글 3개

많은도움필요
3년 전
혹시 어떻게 해야하는지 알 수 있을까요..?
많은도움필요
3년 전
해당 폴더와 하위폴더 모두를 chmod 777로 변경하였음에도 똑같아여 ㅠㅠ
엑스엠엘
3년 전
파일이 안 생기나요?
생겼는데 내용이 없거나 부족한 건가요?

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

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

로그인