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');
이렇게 하고 엑셀다운로드 버튼을 누르니 화면에 깨지게 나옴
�Bd�(��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 |