PhpSpreadsheet (Excel / CSV Okuma & Yazma)

artiframe add spreadsheet komutu, PHP ile Excel (.xlsx), CSV ve ODS dosyaları üretmenin / okumanın tartışmasız endüstri standardı olan phpoffice/phpspreadsheet paketini kurar. Veritabanı dökümlerini (Export) Excel'e aktarırken veya toplu ürün yükleme (Import) senaryolarında hayat kurtarır.

💡 Bilgilendirme: Direkt Kullanım
ArtiFrame, bu paket için src/Service klasörüne özel bir entegrasyon (Wrapper/Stub) sınıfı kopyalamaz. Kurulum yalnızca Composer üzerinden paketi projeye dahil eder. Aşağıdaki kodlar, paketin kendi orijinal işleyişini gösteren basit kullanım örnekleridir. Daha fazlası için PhpSpreadsheet Dokümantasyonunu inceleyebilirsiniz.
Kurulum
terminal
$ artiframe add spreadsheet
Kullanım Örneği: Excel Oluşturma ve İndirtme (Export)

Veritabanından aldığınız bir kullanıcı listesini anında Excel'e dönüştürüp tarayıcıya indirtelim.

ExportController.php
<?php

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 1. Yeni bir çalışma kitabı oluştur
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// 2. Sütun Başlıklarını Yaz
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Ad Soyad');
$sheet->setCellValue('C1', 'E-posta');

// Başlıkları kalın (Bold) yap
$sheet->getStyle('A1:C1')->getFont()->setBold(true);

// 3. Verileri Yaz (Normalde Veritabanından gelir)
$sheet->setCellValue('A2', '1');
$sheet->setCellValue('B2', 'Ahmet Yılmaz');
$sheet->setCellValue('C2', '[email protected]');

$sheet->setCellValue('A3', '2');
$sheet->setCellValue('B3', 'Ayşe Demir');
$sheet->setCellValue('C3', '[email protected]');

// 4. Excel (Xlsx) formatında yazıcıyı hazırla
$writer = new Xlsx($spreadsheet);

// 5. HTTP Header'larını ayarlayarak tarayıcıya "Bu bir Excel dosyasıdır, İndir!" talimatı ver
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Kullanicilar.xlsx"');
header('Cache-Control: max-age=0');

// Dosyayı tarayıcının output akışına (php://output) gönder
$writer->save('php://output');
exit;
Kullanım Örneği: Excel Okuma (Import)
ImportController.php
<?php

use PhpOffice\PhpSpreadsheet\IOFactory;

// Yüklenen dosyanın yolunu belirt
$inputFileName = '/tmp/urunler.xlsx';

// Dosyayı oku ve hafızaya al
$spreadsheet = IOFactory::load($inputFileName);

// Aktif sayfadaki tüm veriyi standart PHP dizisine (Array) dönüştür
$data = $spreadsheet->getActiveSheet()->toArray();

foreach ($data as $row) {
    echo "Ürün: " . $row[0] . " | Fiyat: " . $row[1] . "<br>";
}