본문 바로가기
php

php excel download autoload.php location

by 코닛 2024. 1. 29.

https://beep-dev.tistory.com/1

 

composer phpspreadsheet 설치

자바...리액트에 이어서 php까지 하고 있는 중..^^... PHPExcel을 이용하려고 했으나 최신 엑셀 파일을 다루는데 확장성이 낮아서 composer을 이용하여 phpspreadsheet를 설치 후 사용하기로 결정 phpspreadsheet

beep-dev.tistory.com

저번 phpspreadsheet 설치 이후로 검색을 하다가 뭔가 맘에 드는 정리본이 없어서 정리하는 중

기존 phpExcel과는 다른 느낌이다.

<button type="button" id="excel_download" value="엑셀다운로드" class="btn_sys">엑셀다운로드</button>

엑셀다운로드 버튼을 만들어주고 클릭이벤트를 만들어줬다.

$(document).ready(function () {
    $('#excel_download').click(function(){
        var excelForm = $("<form></form>");
        excelForm.attr("method", "POST"); 
        excelForm.attr("action", "/V1/skin/system/MDD001/MDD001_EXCEL_A.php");
        excelForm.appendTo("body");
        excelForm.submit();
    });
});

내가 참고한 phpspreadsheet들은 vendor/autoload.php 하면 다 작동이 되는 모양인데

설치경로가 달라서 autoload.php를 찾지 못했다. composer 설치 경로로 가니 vendor 폴더가 있는 것을 확인

require '/home/test/vendor/autoload.php';

require 해줬다.

require '/home/test/vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // Xlsx 클래스 추가

// 새 스프레드시트 생성
$spreadsheet = new Spreadsheet();

// 활성 시트 설정
$sheet = $spreadsheet->getActiveSheet();

// 데이터 채우기
$sheet->setCellValue('A1', 'Hello PhpSpreadsheet!');
$sheet->setCellValue('A2', 'This is a sample spreadsheet.');

// Excel 파일로 저장
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

이렇게 하고 엑셀다운로드 버튼을 누르니 화면에 깨지게 나옴

�B d�(��u���K>V�E]L�.ґ2ݠ1�efRB]���]����~�V����XVq�u������J�䴲�(���e{߂C̔<'�u�X���4�#��+�� �.V�\����,Ŷ�k�l���{L;P3Fnʼ�K0/

이렇게 나옴..... 헤더를 추가

<?php

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="filename.xlsx"');

require '/home/test/vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // Xlsx 클래스 추가

// 새 스프레드시트 생성
$spreadsheet = new Spreadsheet();

// 활성 시트 설정
$sheet = $spreadsheet->getActiveSheet();

// 데이터 채우기
$sheet->setCellValue('A1', 'Hello PhpSpreadsheet!');
$sheet->setCellValue('A2', 'This is a sample spreadsheet.');

// Excel 파일로 저장
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

?>

다운로드 되는 파일이름을 변경하고 싶다면 두번째 헤더의 filename.xlsx의 filename부분을 변경하기

$writer->save는 파일 저장 경로인데 서버에 저장하는 게 아니라

php 사용자가 다운로드를 받게 만들고 싶다면 php://output을 하면 됨

'php' 카테고리의 다른 글

phpspreadsheet filename empty 파일이름 빈 값  (0) 2024.02.13
composer phpspreadsheet 설치  (0) 2024.01.29