3.8 KiB
3.8 KiB
Excel Şablonunda Çoklu Section Template Row Sistemi
📋 Genel Bakış
Bu sistem, Excel şablonlarında farklı section'lar için özelleştirilmiş template row'ların yönetimini sağlar. Her section için ayrı template row'lar tanımlanabilir ve veriler bu template'lere göre dinamik olarak yerleştirilir.
🔑 Temel Özellikler
- Çoklu section desteği (Section 1, 2, 3)
- Dinamik satır ekleme ve yönetimi
- Akıllı offset hesaplama sistemi
- Formül ve merge işlemlerinin otomatik güncellenmesi
- Detaylı loglama sistemi
💡 Çalışma Prensibi
1. Section Bazlı Veri Yönetimi
$sectionedDetails = [];
foreach($resultDetail as $detail) {
$section = intval($detail->section);
if (!isset($sectionedDetails[$section])) {
$sectionedDetails[$section] = [];
}
$sectionedDetails[$section][] = $detail;
}
2. Template Row Offset Hesaplama
$totalAddedRows = 0; // Önceki section'larda eklenen toplam satır
$startRow = $originalStartRow + $totalAddedRows; // Offset uygulanmış satır
🛠️ Teknik Detaylar
Template Row İşlemleri
-
Template Row Tanımlama
- Her section için ayrı template row numarası belirlenir
- Template row'lar Excel şablonunda önceden tanımlanır
-
Veri Yerleştirme
- Her section için template row kopyalanır
- Placeholder'lar gerçek verilerle değiştirilir
- Boş section'lar için placeholder'lar temizlenir
-
Formül ve Merge Yönetimi
- Formüller offset'e göre güncellenir
- Merge işlemleri yeni satır numaralarına göre ayarlanır
Örnek Section Yapısı
{
"section1": {
"template_row": 14,
"data": [...],
},
"section2": {
"template_row": 17,
"data": [...],
},
"section3": {
"template_row": 22,
"data": [...],
}
}
📊 Veri Akışı
- SQL sorgusundan section bazlı veri alınır
- Veriler section'lara göre gruplanır
- Her section için:
- Template row kopyalanır
- Veriler yerleştirilir
- Offset hesaplanır
- Formüller güncellenir
- Merge işlemleri yapılır
🔍 Loglama Sistemi
function logProcessInfo($message, $data = [], $type = 'info') {
$logData = [
'timestamp' => date('Y-m-d H:i:s'),
'type' => $type,
'message' => $message,
'memory_usage' => round(memory_get_usage() / 1024 / 1024, 2) . ' MB',
'data' => $data
];
// Log kayıt işlemleri...
}
⚠️ Dikkat Edilmesi Gerekenler
-
Template Row Pozisyonları
- Template row'lar arası mesafe yeterli olmalı
- Section sıralaması doğru yapılmalı
-
Veri Doğrulama
- Section numaraları kontrol edilmeli
- Veri tipleri doğrulanmalı
-
Performans
- Büyük veri setlerinde bellek yönetimi
- Formül hesaplama optimizasyonu
🔄 İşlem Adımları
-
Başlangıç
- Excel şablonu yüklenir
- SQL sorguları çalıştırılır
- Section'lar belirlenir
-
Veri İşleme
- Her section için veriler gruplanır
- Template row'lar kopyalanır
- Offset hesaplanır
-
Sonlandırma
- Template row'lar temizlenir
- Excel dosyası kaydedilir
- PDF dönüşümü yapılır
📈 Performans İyileştirmeleri
- Bellek yönetimi optimizasyonu
- Formül hesaplama stratejisi
- Merge işlemlerinin optimize edilmesi
- Gereksiz döngülerin azaltılması
🎯 Kullanım Senaryoları
-
Çoklu Bölümlü Raporlar
- Farklı veri grupları
- Özelleştirilmiş formatlar
- Dinamik içerik
-
Karmaşık Form Şablonları
- Çoklu veri girişi
- Özel formatlama
- Otomatik hesaplamalar
🔧 Hata Yönetimi
- Detaylı loglama sistemi
- Section bazlı hata yakalama
- Veri doğrulama kontrolleri
- Bellek yönetimi izleme