152 lines
3.8 KiB
Markdown
152 lines
3.8 KiB
Markdown
# 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
|
||
```php
|
||
$sectionedDetails = [];
|
||
foreach($resultDetail as $detail) {
|
||
$section = intval($detail->section);
|
||
if (!isset($sectionedDetails[$section])) {
|
||
$sectionedDetails[$section] = [];
|
||
}
|
||
$sectionedDetails[$section][] = $detail;
|
||
}
|
||
```
|
||
|
||
### 2. Template Row Offset Hesaplama
|
||
```php
|
||
$totalAddedRows = 0; // Önceki section'larda eklenen toplam satır
|
||
$startRow = $originalStartRow + $totalAddedRows; // Offset uygulanmış satır
|
||
```
|
||
|
||
## 🛠️ Teknik Detaylar
|
||
|
||
### Template Row İşlemleri
|
||
|
||
1. **Template Row Tanımlama**
|
||
- Her section için ayrı template row numarası belirlenir
|
||
- Template row'lar Excel şablonunda önceden tanımlanır
|
||
|
||
2. **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
|
||
|
||
3. **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ı
|
||
|
||
```json
|
||
{
|
||
"section1": {
|
||
"template_row": 14,
|
||
"data": [...],
|
||
},
|
||
"section2": {
|
||
"template_row": 17,
|
||
"data": [...],
|
||
},
|
||
"section3": {
|
||
"template_row": 22,
|
||
"data": [...],
|
||
}
|
||
}
|
||
```
|
||
|
||
## 📊 Veri Akışı
|
||
|
||
1. SQL sorgusundan section bazlı veri alınır
|
||
2. Veriler section'lara göre gruplanır
|
||
3. 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
|
||
|
||
```php
|
||
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
|
||
|
||
1. **Template Row Pozisyonları**
|
||
- Template row'lar arası mesafe yeterli olmalı
|
||
- Section sıralaması doğru yapılmalı
|
||
|
||
2. **Veri Doğrulama**
|
||
- Section numaraları kontrol edilmeli
|
||
- Veri tipleri doğrulanmalı
|
||
|
||
3. **Performans**
|
||
- Büyük veri setlerinde bellek yönetimi
|
||
- Formül hesaplama optimizasyonu
|
||
|
||
## 🔄 İşlem Adımları
|
||
|
||
1. **Başlangıç**
|
||
- Excel şablonu yüklenir
|
||
- SQL sorguları çalıştırılır
|
||
- Section'lar belirlenir
|
||
|
||
2. **Veri İşleme**
|
||
- Her section için veriler gruplanır
|
||
- Template row'lar kopyalanır
|
||
- Offset hesaplanır
|
||
|
||
3. **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ı
|
||
|
||
1. **Çoklu Bölümlü Raporlar**
|
||
- Farklı veri grupları
|
||
- Özelleştirilmiş formatlar
|
||
- Dinamik içerik
|
||
|
||
2. **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 |