ํ
ํ๋ฆฟ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๊ธฐ์กด ํ์ผ์ ํธ์งํ๋ ค๊ณ ํฉ๋๋ค. ์ด์ ์ด ๋ฒ์ ์์๋์ด ๊ธฐ๋ฅ์ด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ๋์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋ฌ๊ทธ์ธ ๋ด๋ถ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ function resisterEvents()
์ฌ์ํ๋ฉด ํผ์์ ํ ์ ์๋์ง ์๊ณ ์ถ์ต๋๋ค.
๊ธฐ์กด ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์ํธ๋ฅผ ์ ํํด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ํธ์งํ์ง ๋ง์ญ์์ค.
์ด๊ฒ์ ๋ด ์ฝ๋์ ๋๋ค.
/**
* <strong i="16">@return</strong> array
*/
public function registerEvents(): array
{
return [
BeforeWriting::class => function(BeforeWriting $event) {
$event->writer->reopen(storage_path('app/public/files/mytemplate.xlsx'),Excel::XLSX);
$event->writer->getSheetByIndex(0);
return $event->getWriter()->getSheetByIndex(0);
}
];
}
๋ช ๊ฐ์ง ์ ์?
๋ง์ ๊ฐ์ฌ
function resisterEvents()
๋ด๋ถ์์ด ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
AfterSheet::class => function(AfterSheet $event) {
$event->sheet->setCellValue('G2', 'Hello world');
}
๋ํ function query()
ํตํด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด
๋ง์ง๋ง์ผ๋ก ์ด๊ฒ์ ๋ฒ์ 3.1.0์์ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. ์ค์ ๋ฒ์ 3.1.10์์๋ reopen
ํจ์๊ฐ ๋ณ๊ฒฝ ๋์๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค. ์๋ก์ด ์
๋ฐ์ดํธ ๋ฐ ๊ธฐ์กด ํ์ผ ํธ์ง ๊ฐ์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
->reopen()
์ ๋ด๋ถ ๋ฉ์๋์ด๋ฏ๋ก์ฃผ์ํด์ ์ฌ์ฉํด์ผํฉ๋๋ค. new LocalTemporaryFile(storage_path('app/public/files/mytemplate.xlsx'))
๋ฅผ ์ ๋ฌํ์ฌ ๋ค์ ์ด๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ธฐ์กด ํ์ผ (ํ ํ๋ฆฟ) ํธ์ง์ ๋ก๋๋งต (๋ฒ์ 3.3)์ ์์ง๋ง ํน์ ๋ฆด๋ฆฌ์ค ๋ ์ง๋ ์์ต๋๋ค.
์ฐ์ ์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ ์์ฉ ์ง์ ์น์ ( https://laravel-excel.com/commercial-support)์ ์ฐธ์กฐํ์ญ์์ค .
์ด ๋น ๋ฅธ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด๋ ๊ฒ ํด๋ณด๊ฒ ์ต๋๋ค.
์ง๊ธ์ ์ฐ์ ์์๊ฐ ์๋์ง๋ง ๋งคํฌ๋ก ๋ฐ ๋์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด Excel์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ Excel ์์์ ๋ค์ ๊ณ์ฐํด์ผํ๋ฏ๋ก ํ ์คํธ ์ค์ ๋๋ค. ๋ณต์กํ ์์ ๋ก๋ ์ฝ์ง ์๋ค๋ ๊ฒ์ ์๊ธฐ ๋๋ฌธ์์ด ๋ชจ๋ ๊ฒ์ ์๋ํ๊ณ ์์ต๋๋ค.
์ข์ ๊ฑธ ์ฐพ์ผ๋ฉด ์ ๊ณ ํ๊ฒ ์ต๋๋ค
์ ๋ฐ์ดํธ์ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์๊ฒฌ์ ๋งํ์ญ์์ค.
์๋
ํ์ธ์, @MarFelix. ๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์ด์ ์ฌ์ฉ์ค์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋น์ ์ ๋์ธ ์ ์์ต๋๋ค.
๋ด๋ณด๋ด๊ธฐ๊ฐ ์ํ๋๋ ๋ฐฉ๋ฒ์ ์ดํดํ๊ธฐ ์ํด Mattwebsite ์ฝ๋๋ฅผ ๊น์ด ํ๊ณ ๋ค์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ผ์ ๋ค์ด๋ก๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ค์ ๋จ๊ณ๋ฅผ ๊ธฐ์ตํ์ญ์์ค.
Excel
๋น์ ์ ํต๊ณผ ํด๋์ค๋ฅผ Export
ํด๋์ค (์ด ์์์ ์ฌ์ฉํ๋ download
๋ฐฉ๋ฒ)Excel
ํด๋์ค๋ ์ฌ์ฉํ Writer
์๋ณํ๊ณ ์ด Writer
์์ export
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.Writer
๋ Export
(๊ทธ๋ฆฌ๊ณ BeforeExport
์ด๋ฒคํธ ํธ์ถ)์ ์ด๊ณ ์ ์ํธ๋ฅผ ์ฑ์ด ๋ค์ ์์ฒด write
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.write
๋ฉ์๋ ( Writer
ํด๋์ค)๋ BeforeWriting
์ด๋ฒคํธ๋ฅผ ํธ์ถํ๊ณ XLSX ์ด์ธ์ ๋ค๋ฅธ ์ ํ์ ๋ํด ํ์ผ์ ๊ธฐ๋กํฉ๋๋ค.๊ทธ๋์ BeforeWriting
๊ฐ ์๋ํ์ง ์๊ณ BeforeExport
์ฌ์ฉํ๋ฉด ์๋ํ์ง๋ง ์ ์ํธ์์๋ ์๋ํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ด๋ณด๋ด๊ธฐ ๋ฐ์ดํฐ (์ ๊ฒฝ์ฐ์๋ FromCollection)๋ฅผ ๊ฐ์ ธ ์ค๋ ๋ฉ์๋์ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด 2 ๋จ๊ณ์์ ์ฒ๋ฆฌ๋์ง ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ BeforeWriting
์์ ํ๋๊ทธ๋ฅผ ํ์ํ๊ณ ์ํ๋ ์ํธ๋ฅผ ๊ฐ์ ธ ์์ export
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์ฝ๋์ ๋๋ค.
public function collection()
{
if ($this->calledByEvent) { // flag
return $this->myCollectionToExport;
}
return collect([]);
}
public function registerEvents(): array
{
return [
BeforeWriting::class => function(BeforeWriting $event) {
$templateFile = new LocalTemporaryFile(storage_path('app/public/files/mytemplate.xlsx'));
$event->writer->reopen($templateFile, Excel::XLSX);
$event->writer->getSheetByIndex(0);
$this->calledByEvent = true; // set the flag
$event->writer->getSheetByIndex(0)->export($event->getConcernable()); // call the export on the first sheet
return $event->getWriter()->getSheetByIndex(0);
},
];
}
Maatwebsite\Excel\Writer
download
๋ฐ write
๋ฉ์๋๋ฅผ ์ดํด๋ณด๋ฉด ๋งค์ฐ ์ ์ฉ ํ ๊ฒ์
๋๋ค.
์ด ์ ๋ณด์ ๋จ๊ณ๋ฅผ ํตํด๋ณด๋ค ๋ณต์กํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
->reopen()
์ ๋ด๋ถ ๋ฉ์๋์ด๋ฏ๋ก์ฃผ์ํด์ ์ฌ์ฉํด์ผํฉ๋๋ค.new LocalTemporaryFile(storage_path('app/public/files/mytemplate.xlsx'))
๋ฅผ ์ ๋ฌํ์ฌ ๋ค์ ์ด๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.๊ธฐ์กด ํ์ผ (ํ ํ๋ฆฟ) ํธ์ง์ ๋ก๋๋งต (๋ฒ์ 3.3)์ ์์ง๋ง ํน์ ๋ฆด๋ฆฌ์ค ๋ ์ง๋ ์์ต๋๋ค.
์ฐ์ ์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ ์์ฉ ์ง์ ์น์ ( https://laravel-excel.com/commercial-support)์ ์ฐธ์กฐํ์ญ์์ค .