maatwebsite/excel 모듈을 설치 했으나 정상 적으로 설치 되지 않아서
삭제 하고,
composer remove maatwebsite/excel
phpspreadsheet 패키지를 설치
composer require phpoffice/phpspreadsheet
컨트롤러 예시
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class ExportController extends Controller
{
public function export(Request $request)
{
$tableName = $request->get('table');
if (!$tableName) {
return redirect()->back()->with('error', 'Table name is required.');
}
// 임의로 작성한 컬럼 이름
$headings = [
'ID',
'Name',
'Email',
'Created At',
'Updated At'
];
// 데이터 조회
$data = DB::table($tableName)->select('id', 'name', 'email', 'created_at', 'updated_at')->get();
// 스프레드시트 생성
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// 헤더 추가
$sheet->fromArray($headings, null, 'A1');
// 데이터 추가
$rows = [];
foreach ($data as $row) {
$rows[] = (array) $row;
}
$sheet->fromArray($rows, null, 'A2');
// 엑셀 파일 다운로드
$writer = new Xlsx($spreadsheet);
$fileName = $tableName . '.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
$writer->save($temp_file);
return response()->download($temp_file, $fileName)->deleteFileAfterSend(true);
}
}
라우트 정의
use App\Http\Controllers\ExportController;
Route::get('/export', [ExportController::class, 'export']);
'[ Web 관련 ] > Laravel' 카테고리의 다른 글
라라벨 POST 데이터중 필요한 항목만 선별해서 DB에 저장하는 샘플 (0) | 2024.06.25 |
---|---|
라라벨 암호화 (0) | 2024.06.24 |
Cannot use object of type stdClass as array 오류 (0) | 2024.05.24 |
라라벨 RAW쿼리 사용 (0) | 2024.04.29 |
라라벨 오류 메시지 리턴 (0) | 2024.04.25 |