5) Alternatif Şablon Formatı: JXLS
JXLS, Excel şablonlarından rapor üretmek için kullanılan Java tabanlı bir kütüphanedir. Jinja'ya alternatif olarak desteklenmektedir. Temel farklılıklar şöyledir:
1) Değişken sözdizimi:
JXLS'de hücreye değer yazmak için${değişken}kullanılır;Jinja'nın{{ değişken }}biçimininJXLSkarşılığıdır.Jinja: {{ city }} → JXLS: ${city} Jinja: {{ sale|sum(...) }} → JXLS: ${sale.![sum(order_amount)]}
2) Döngü sözdizimi:
JXLS’de döngülerjx:eachdirektifi ile hücre comment’ine yazılır. Bunun yanı sıra şablonun A1 hücresinejx:area(lastCell=“...”)direktifi eklenerek işlenecek alan tanımlanmalıdır. Bu iki direktif olmadan şablonJXLSmotoru tarafından işlenmez. Parametre değişkenleri (${yil}, ${ay}) doğrudan adlarıyla, satır değişkenleri ise${row.alan_adi}biçimiyle yazılır.A1 comment : jx:area(lastCell="H11") A10 comment : jx:each(items="sale" var="row" lastCell="H10") A10 değeri : ${row.city} | B10: ${yil} | C10: ${row.product_category} | D10: ${ay} E10–H10 : ${row.order_amount} ${row.total_price} ${row.total_cost} ${row.net_price} E11–H11 : =SUM(E10) =SUM(F10) =SUM(G10) =SUM(H10) [JXLS satır ekleyince formül genişler]
3) Dosya ve yapı:
JXLSşablonu da.xlsxuzantılıdır;Jinjaşablonuyla aynı biçimde Rapor Şablonu panelinden yüklenir. Şablon formatıJinja'dan bağımsız olarak değiştirilebilir; aynıSQLsorgusu ve parametreler her iki formatta da çalışır.
JXLS Şablon Versiyonları — v0, v1, v2
JXLS v0 — Düz liste (Şehir × Kategori):
Her satır bir şehir–kategori kombinasyonunu temsil eder. Ay bilgisi ${ay} ile parametre değeri olarak gösterilir (seçilen tüm ayların birleşik metni). Jinja v0’ın JXLS karşılığıdır.
Örnek Şablon:
Örnek Çıktı:
JXLS v1 — Ay bazında kırılım:
v0’dan tek farkı D10 hücresinin ${ay} yerine ${row.month} içermesidir; her satır bir şehir–kategori–ay kombinasyonunu temsil eder. SQL sorgusunda month kolonu hem SELECT hem GROUP BY içinde bulunmalıdır.
Örnek Şablon:
Örnek Çıktı:
JXLS v2 — Sınırlılık: Jinja v2’nin kategori bazında mini tablo oluşturan yapısı JXLS ile doğrudan gerçekleştirilemez. JXLS tek düzeyli jx:each döngülerini destekler; iç içe gruplama için sunucu taraflı ön gruplama gerekir. Bu nedenle JXLS ile hazırlanmış v2 şablonu, yapısal olarak v0’dan farklı değildir (düz liste). Kategori bazında gruplu sunum için Jinja v2 şablonu kullanılmalıdır.
Last updated
