<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>XLSB vs XLSX on File Format Blog</title>
    <link>https://blog.fileformat.com/az/tag/xlsb-vs-xlsx/</link>
    <description>Recent content in XLSB vs XLSX on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>az</language>
    <lastBuildDate>Wed, 30 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/az/tag/xlsb-vs-xlsx/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Böyük Məlumat Dəstləri üçün XLSB vs XLSX: Tərtibatçının Performans Bələdçisi</title>
      <link>https://blog.fileformat.com/az/spreadsheet/xlsb-vs-xlsx-for-large-data-sets-a-developers-performance-guide/</link>
      <pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/az/spreadsheet/xlsb-vs-xlsx-for-large-data-sets-a-developers-performance-guide/</guid>
      <description>XLSB-nin böyük məlumat dəstləri üçün XLSX-dən niyə daha üstün olduğunu kəşf edin. Sıxışdırma mexanizmlərini, yaddaş istifadəsini, Python/C# benchmarklarını və binary formatını XML-ə üstün tutma vaxtını araşdırın.</description>
      <content:encoded><![CDATA[<p><strong>Son Yenilənmə</strong>: 30 Sentyabr, 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/xlsb-vs-xlsx-for-large-data-sets-a-developers-performance-guide.png#center"
         alt="XLSB vs XLSX for Large Data Sets: A Developer’s Performance Guide"/> 
</figure>

<h2 id="böyük-məlumat-dəstləri-üçün-xlsb-vs-xlsx-tərtibatçının-performans-bələdçisi">Böyük Məlumat Dəstləri üçün XLSB vs XLSX: Tərtibatçının Performans Bələdçisi</h2>
<p>Əgər siz məlumat boru kəmərləri, arxa plan hesabat mühərrikləri və ya Microsoft Excel ilə əlaqə quran analitika alətləri yaradırsınızsa, ehtimal ki, &ldquo;divara&rdquo; dəyibsiniz.</p>
<p>İstifadəçi 450,000 sətirlik iş dəftəri yükləyir. Serveriniz işçi iplikləri işə salır, yaddaş istifadəsi gigabaytlara yüksəlir, zibil toplama icra mühitini dondurur və icra müddəti vaxtı aşır. Yükü yoxlayırsınız: bu, standart <code>.xlsx</code> fayldır.</p>
<p>Bunu həll etmək üçün, tərtibatçılar tez-tez chunking, axın parserləri tətbiq etmək və ya faylları arxa plan işçilərinə yükləmək üçün günlər sərf edirlər. Lakin, ən təsirli optimizasiyalardan biri heç bir arxitektur yenidən dizayn tələb etmir: fayl uzantısını <code>.xlsx</code>‑dən <code>.xlsb</code>‑yə dəyişdirmək.</p>
<p>Bu bələdçidə, hər iki formatın daxili strukturlarına dərinləşirik, onların daxili arxitekturasının niyə radikal şəkildə fərqli performans xüsusiyyətləri yaratdığını araşdırırıq, Python və .NET üzrə konkret benchmarkları müqayisə edirik və istehsalda ikili iş dəftərlərinin nə zaman yerləşdirilməli olduğu barədə aydın qaydalar təqdim edirik.</p>
<h2 id="1-arxa-planda-openxml-vs-biff12">1. Arxa Planda: OpenXML vs. BIFF12</h2>
<p>Performansın böyük məlumat dəstlərində niyə bu qədər dramatik şəkildə fərqləndiyini başa düşmək üçün, hər bir formatın qeydləri diskte necə saxladığına baxmalıyıq.</p>
<pre tabindex="0"><code>       ┌────────────────────────┐         ┌────────────────────────┐
       │     sample.xlsx        │         │      sample.xlsb       │
       │ (ZIP Archive Wrapper)  │         │ (ZIP Archive Wrapper)  │
       └───────────┬────────────┘         └───────────┬────────────┘
                   │                                  │
       ┌───────────▼────────────┐         ┌───────────▼────────────┐
       │   sheet1.xml (UTF-8)   │         │    sheet1.bin (BIFF12) │
       │  Verbose ASCII Tags    │         │ Structured Byte Stream │
       │  &lt;c r=&#34;A1&#34;&gt;&lt;v&gt;42&lt;/v&gt;   │         │ [Opcode][Len][Payload] │
       └────────────────────────┘         └────────────────────────┘
</code></pre><p>Həm <code>.xlsx</code> həm də <code>.xlsb</code> faylları Open Packaging Conventions (OPC) standartına uyğun sıxılmış ZIP konteynerləridir. Hər hansı bir faylın adını <code>.zip</code> olaraq dəyişdirib çıxartdığınızda, tanış bir qovluq strukturu görəcəksiniz: <code>_rels</code>, <code>docProps</code> və <code>xl/worksheets/</code>.</p>
<p>Əsas fərq <code>xl/worksheets/</code> qovluğunun içindədir:</p>
<ul>
<li><strong>XLSX cədvəlləri sadə XML mətn kimi (<code>sheet1.xml</code>) saxlayır.</strong></li>
<li><strong>XLSB cədvəlləri özəl ikili axınlar kimi (<code>sheet1.bin</code>) saxlayır, Microsoft-un BIFF12 (Binary Interchange File Format 12) kodlamasından istifadə edir.</strong></li>
</ul>
<h3 id="necə-xlsx1-məlumatı-kodlayır-xml-dom-yükü">Necə <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> Məlumatı Kodlayır (XML DOM Yükü)</h3>
<p>XLSX iş vərəqində, hər hüceyrə açıq XML teqləri ilə bəyan edilir:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;row</span> <span style="color:#a6e22e">r=</span><span style="color:#e6db74">&#34;1&#34;</span> <span style="color:#a6e22e">spans=</span><span style="color:#e6db74">&#34;1:2&#34;</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;c</span> <span style="color:#a6e22e">r=</span><span style="color:#e6db74">&#34;A1&#34;</span> <span style="color:#a6e22e">t=</span><span style="color:#e6db74">&#34;s&#34;</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;v&gt;</span>142<span style="color:#f92672">&lt;/v&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/c&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;c</span> <span style="color:#a6e22e">r=</span><span style="color:#e6db74">&#34;B1&#34;</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;v&gt;</span>98234.55<span style="color:#f92672">&lt;/v&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/c&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/row&gt;</span>
</span></span></code></pre></div><p>Bu sətri oxuyarkən, icra mühitiniz aşağıdakını etməlidir:</p>
<ol>
<li>Xam deflate axınını mətnə sıxılmışdan çıxarın.</li>
<li>Simvol ardıcıllığını tokenləşdirin və XML DOM və ya SAX hadisə axınına parse edin.</li>
<li>Açma və bağlama teqlərini doğrulayın (<code>&lt;c&gt;</code>, <code>&lt;/c&gt;</code>, <code>&lt;v&gt;</code>, <code>&lt;/v&gt;</code>).</li>
<li>Ayrı <code>sharedStrings.xml</code> cədvəlindən sətir axtarışlarını həll edin.</li>
<li>ASCII mətnini <code>&quot;98234.55&quot;</code> IEEE 754 64-bit üzən nöqtə ədədinə çevirin.</li>
</ol>
<p>Hər bir hüceyrə sətir təhlili, sətir ayrılması və leksik analiz üçün CPU yükü yaradır. Bunu 500 000 sətir və 30 sütun (15 milyon hüceyrə) üzrə çoxaltsaq, CPU sintaksisin təhlili üçün sahə dəyərlərinin işlənməsindən xeyli daha çox dövrə sərf edir.</p>
<h3 id="necə-xlsb3-məlumatı-kodlayır-biff12-ikili-axını">Necə <a href="https://docs.fileformat.com/spreadsheet/xlsb/">XLSB</a> Məlumatı Kodlayır (BIFF12 İkili Axını)</h3>
<p>BIFF12 mətn seriyalaşdırmasını tamamilə ləğv edir. Sətir işarələməsi yerinə, məlumat dəyişkən uzunluqlu ikili qeydlərin ardıcıl ardıcıllığı kimi təşkil olunur:</p>
<pre tabindex="0"><code>[Record Type: 2 bytes] [Record Length: 4 bytes] [Payload: N bytes]
</code></pre><p>BIFF12-də üzən nöqtəli hüceyrə <code>&quot;98234.55&quot;</code> kimi sətir təmsillərindən istifadə etmir. O birbaşa təmsil olunur:</p>
<ul>
<li>Qeyd ID üçün 2 bayt (məsələn, <code>BrtCellRk</code> və ya <code>BrtCellReal</code>)</li>
<li>Sütun/sətir indeksləri üçün 4 bayt</li>
<li>8 bayt xam, IEEE 754 ikiqat dəqiqlikli bayt strukturu</li>
</ul>
<p>Parseriniz XLSB faylını oxuduqda, leksik təhlili tamamilə ötürür. O, qeyd başlığını oxuyur, buferdən 8 xam baytı götürür, onları birbaşa yaddaşa köçürür və göstəricini irəliyə hərəkət etdirir. Doğrulama üçün heç bir etiket yoxdur, sətir‑rəqəm tip çevrilmələri yoxdur və rəqəmli məlumatlar üçün UTF‑8 dekodlaşdırma yükü sıfırdır.</p>
<h2 id="2-kəmiyyət-ölçüləri-disk-yaddaş-və-işləmə-sürəti">2. Kəmiyyət Ölçüləri: Disk, Yaddaş və İşləmə sürəti</h2>
<p>Real‑dünya təsirini göstərmək üçün, <strong>750,000 sətir və 25 sütun</strong> (zaman möhürləri, üzən nöqtəli ədədlər, tam ədədlər və kateqoriya kodlarından ibarət qarışıq) ehtiva edən simulyasiya edilmiş bir məlumat dəstini nəzərə alın.</p>
<p>Aşağıdakı testlər eyni cədvəl məlumatını həm XLSX, həm də XLSB formatında saxlayaraq qiymətləndirir.</p>
<h3 id="test-mühiti">Test Mühiti</h3>
<ul>
<li><strong>CPU:</strong> AMD Ryzen 9 5900X (12 nüvə, 24 iplik)</li>
<li><strong>RAM:</strong> 64 GB DDR4-3600</li>
<li><strong>Storage:</strong> PCIe 4.0 NVMe SSD</li>
<li><strong>Runtime:</strong> Python 3.11 (<code>openpyxl</code>, <code>pyxlsb</code>, <code>calamine</code>) &amp; .NET 8 (<code>ExcelDataReader</code>, <code>ClosedXML</code>)</li>
</ul>
<h3 id="əsas-performans-göstəriciləri">Əsas Performans Göstəriciləri</h3>
<table>
<thead>
<tr>
<th style="text-align:left">Metrik</th>
<th style="text-align:left"><a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> (OpenXML)</th>
<th style="text-align:left"><a href="https://docs.fileformat.com/spreadsheet/xlsb/">XLSB</a> (BIFF12)</th>
<th style="text-align:left">Delta / Təkmilləşdirmə</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Diskdə Fayl Ölçüsü</strong></td>
<td style="text-align:left">128.4 MB</td>
<td style="text-align:left">68.2 MB</td>
<td style="text-align:left"><strong>~47% daha kiçik</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Yadda saxlama / Serializasiya vaxtı</strong></td>
<td style="text-align:left">42.6 s</td>
<td style="text-align:left">14.1 s</td>
<td style="text-align:left"><strong>3.0x daha sürətli</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Oxuma vaxtı (Python DOM parser)</strong></td>
<td style="text-align:left">38.2 s</td>
<td style="text-align:left">8.9 s</td>
<td style="text-align:left"><strong>4.3x daha sürətli</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Oxuma Vaxtı (Rust/C Mühərriki)</strong></td>
<td style="text-align:left">6.4 s</td>
<td style="text-align:left">1.9 s</td>
<td style="text-align:left"><strong>3.3x daha sürətli</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Oxuma zamanı pik heap ayrılması</strong></td>
<td style="text-align:left">~1.85 GB</td>
<td style="text-align:left">~510 MB</td>
<td style="text-align:left"><strong>~72% azalma</strong></td>
</tr>
</tbody>
</table>
<h3 id="niyə-xlsb-faylları-daha-kiçikdir">Niyə XLSB Faylları Daha Kiçikdir</h3>
<p>Hər iki format standart ZIP sıxılmasından istifadə etsə də, ikili axınlar şişirdilmiş XML mətnindən çox daha səmərəli sıxılır:</p>
<ol>
<li><strong>Lazımsız sintaksis aradan qaldırılır:</strong> XML hər bir qeyd üçün təkrarlanan teqləri (<code>&lt;c r=\&quot;AA1\&quot; s=\&quot;1\&quot;&gt;</code>) ehtiva edir. ZIP sıxılması təkrarlanan sətirləri azaltsa da, sıxılmamış məlumat axını çox böyükdür.</li>
<li><strong>Rəqəmsal sıxlıq:</strong> XML-də <code>12345678.9012</code> sayı ASCII mətnində 14 bayt tələb edir. BIFF12-də isə bu, 8 baytlıq double kimi saxlanılır (və ya müəyyən dəqiqlik qaydalarına uyğun gəlirsə 4 baytlıq <code>RK</code> qeydi şəklində paketlənir).</li>
</ol>
<h2 id="3-yaddaş-izini-və-zibil-toplama-təzyiqi">3. Yaddaş İzini və Zibil Toplama Təzyiqi</h2>
<p>Veb xidmətləri və mikroservislər eyni anda sorğularla işləyərkən, CPU sürəti yalnız mübarizənin yarısıdır; <strong>yaddaş izi</strong> isə tətbiqlərin həqiqətən uğursuz olduğu yerdir.</p>
<pre tabindex="0"><code>XLSX Parsing Heap Profile:
[ String Buffer ] -&gt; [ Tokenizer ] -&gt; [ XML DOM Nodes ] -&gt; [ Object Boxing ]
▲ Massive Gen 0/1 heap allocation -&gt; Triggers aggressive Garbage Collection

XLSB Parsing Heap Profile:
[ Byte Buffer ] -&gt; [ Fixed Struct Copy ] -&gt; [ Destination Array ]
▲ Minimal allocations -&gt; Low GC overhead
</code></pre><p>XML parseri 100 MB ölçülü XLSX faylını işlədikdə, minlərlə müvəqqəti string tokeni, string dilim tamponu və lüğət axtarışları yaratmalıdır. Zibil toplama (garbage collection) olan dillərdə (Java, C#, Go, Node.js, Python) bu, ciddi heap fragmentasiyasına səbəb olur və icra mühitini tez-tez Zibil Toplama (GC) fasilələrinə məcbur edir.</p>
<p>XLSB parsinqi birbaşa sabit eni olan bayt dilimləri üzərində işlədiyi üçün parserlər məlumatı stack‑də ayrılmış strukturlara və ya təkrar istifadə edilə bilən bayt tamponlarına oxuya bilirlər. Nəticədə yaddaş izi xeyli azalır və icra vaxtı ayrıcıda heç bir thrashing baş vermir.</p>
<h2 id="4-tərtibatçı-tətbiq-nümunələri">4. Tərtibatçı Tətbiq Nümunələri</h2>
<p>Gəlin, ümumi inkişaf etdirici alət zəncirləri üzrə XLSB‑dən necə istifadə etmək olar, baxaq.</p>
<h3 id="python-openpyxl-dən-calamine--pyxlsb-ə-keçid">Python: OpenPyXL-dən Calamine / PyXLSB-ə Keçid</h3>
<p>Standart <code>pandas.read_excel('data.xlsx')</code> varsayılan olaraq <code>openpyxl</code>‑i istifadə edir, bu da yaddaşda ağır bir ağac yaradır.</p>
<p>Böyük XLSB fayllarını maksimum sürətlə emal etmək üçün Rust‑əsaslı <code>calamine</code> mühərrikindən istifadə edin (<code>python-calamine</code> vasitəsilə mövcuddur və müasir Pandas‑a inteqrasiya olunmuşdur):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> pandas <span style="color:#66d9ef">as</span> pd
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> time
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>filename_xlsx <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;large_dataset.xlsx&#34;</span>
</span></span><span style="display:flex;"><span>filename_xlsb <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;large_dataset.xlsb&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Reading standard XLSX (uses openpyxl by default)</span>
</span></span><span style="display:flex;"><span>t0 <span style="color:#f92672">=</span> time<span style="color:#f92672">.</span>perf_counter()
</span></span><span style="display:flex;"><span>df_xlsx <span style="color:#f92672">=</span> pd<span style="color:#f92672">.</span>read_excel(filename_xlsx, engine<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;openpyxl&#34;</span>)
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;XLSX loaded in </span><span style="color:#e6db74">{</span>time<span style="color:#f92672">.</span>perf_counter() <span style="color:#f92672">-</span> t0<span style="color:#e6db74">:</span><span style="color:#e6db74">.2f</span><span style="color:#e6db74">}</span><span style="color:#e6db74">s&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Reading XLSB with Calamine (Rust engine)</span>
</span></span><span style="display:flex;"><span>t0 <span style="color:#f92672">=</span> time<span style="color:#f92672">.</span>perf_counter()
</span></span><span style="display:flex;"><span>df_xlsb <span style="color:#f92672">=</span> pd<span style="color:#f92672">.</span>read_excel(filename_xlsb, engine<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;calamine&#34;</span>)
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;XLSB loaded in </span><span style="color:#e6db74">{</span>time<span style="color:#f92672">.</span>perf_counter() <span style="color:#f92672">-</span> t0<span style="color:#e6db74">:</span><span style="color:#e6db74">.2f</span><span style="color:#e6db74">}</span><span style="color:#e6db74">s&#34;</span>)
</span></span></code></pre></div><p>Əgər bütün matrisi DataFrame‑ə yükləmədən, böyük məlumat dəstlərini sətir‑sətir iterasiya edirsinizsə, <code>pyxlsb</code> yüngül bir axın iteratoru təqdim edir:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pyxlsb <span style="color:#f92672">import</span> open_workbook
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>total_sum <span style="color:#f92672">=</span> <span style="color:#ae81ff">0.0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open_workbook(<span style="color:#e6db74">&#34;massive_export.xlsb&#34;</span>) <span style="color:#66d9ef">as</span> wb:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">with</span> wb<span style="color:#f92672">.</span>get_sheet(<span style="color:#ae81ff">1</span>) <span style="color:#66d9ef">as</span> sheet:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> row <span style="color:#f92672">in</span> sheet:
</span></span><span style="display:flex;"><span>            <span style="color:#75715e"># Cell 0 contains an RK integer or Double float</span>
</span></span><span style="display:flex;"><span>            val <span style="color:#f92672">=</span> row[<span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>v
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> val <span style="color:#f92672">is</span> <span style="color:#f92672">not</span> <span style="color:#66d9ef">None</span>:
</span></span><span style="display:flex;"><span>                total_sum <span style="color:#f92672">+=</span> val
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Aggregated Total: </span><span style="color:#e6db74">{</span>total_sum<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><h3 id="c--net-yüksək-performanslı-axın-istifadəsi">C# / .NET: Yüksək Performanslı Axın İstifadəsi</h3>
<p>.NET‑də <code>ClosedXML</code> və ya <code>EPPlus</code> kimi kitabxanalar standart yaradılış üçün əladır, lakin yaddaşın tükənməməsi üçün böyük faylları oxuyarkən, XLSB dəstəyi olan <code>ExcelDataReader</code> son dərəcə sürətlidir:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.IO;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> ExcelDataReader;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">XlsbProcessor</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> ProcessBinarySheet(<span style="color:#66d9ef">string</span> filePath)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// ExcelDataReader automatically identifies BIFF12 from file headers</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">using</span> var stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">using</span> var reader = ExcelReaderFactory.CreateReader(stream);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">long</span> rowCount = <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">double</span> aggregateValue = <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">while</span> (reader.Read())
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            rowCount++;
</span></span><span style="display:flex;"><span>            
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Read column directly without boxing overhead where possible</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> (!reader.IsDBNull(<span style="color:#ae81ff">0</span>))
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                aggregateValue += reader.GetDouble(<span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        Console.WriteLine(<span style="color:#e6db74">$&#34;Processed {rowCount:N0} rows. Sum: {aggregateValue:F2}&#34;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h2 id="5-memarlıq-ticarət-qurbanları-xlsb-dən-nə-zaman-istifadə-etməmək">5. Memarlıq Ticarət Qurbanları: XLSB-dən Nə Zaman İstifadə Etməmək</h2>
<p>Bütün üstün performans üstünlüklərinə baxmayaraq, XLSB hər şey üçün həll deyil. Onu bütün texnologiya yığınına tətbiq etməzdən əvvəl bir neçə əməliyyat ticarət‑nöqtəsini nəzərə almalısınız:</p>
<pre tabindex="0"><code>                      DECISION MATRIX
                      
               Is file size &gt; 50MB OR 
               rows &gt; 100,000?
                    │
         ┌──────────┴──────────┐
        YES                    NO
         │                     │
   Do third-party        Use standard XLSX
   tools strictly        (Maximum compatibility)
   require OpenXML?
         │
    ┌────┴────┐
   YES        NO
    │         │
Use XLSX   Use XLSB
(Stream)   (Max speed &amp; efficiency)
</code></pre><h3 id="1-ekosistem-və-kitabxana-dəstəyi">1. Ekosistem və Kitabxana Dəstəyi</h3>
<ul>
<li><strong>XLSX:</strong> Ümumi. Praktik olaraq hər bir dil, kitabxana, SaaS aləti (Google Sheets, Airtable, Tableau) və veb parser OpenXML-i yerli olaraq dəstəkləyir.</li>
<li><strong>XLSB:</strong> Daha az yayılmış. Excel, LibreOffice və inkişaf etmiş proqramçı kitabxanaları (<code>ExcelDataReader</code>, <code>pyxlsb</code>, <code>calamine</code>, <code>Aspose</code>) onu dəstəkləsə də, bir çox yüngül paketlər və ya tamamilə veb-əsaslı JavaScript parserləri (məsələn, <code>SheetJS</code>-in köhnə versiyaları) məhdud və ya yalnız oxumaq üçün dəstək göstərir.</li>
</ul>
<h3 id="2-git-və-versiya-nəzarəti-fərqləndirməsi">2. Git və Versiya Nəzarəti Fərqləndirməsi</h3>
<ul>
<li><strong>XLSX:</strong> Çünki o, ZIP konteynerində mətn XML-i saxlayır, komanda sətiri alətləri və Git hook-ları ZIP-i açıb XML-i formatlaya bilər, bu da commit-lər arasındakı oxunaqlı struktur fərqlərini yaratmağa imkan verir.</li>
<li><strong>XLSB:</strong> Tamamilə ikili məlumat. Versiya nəzarət sistemləri onu tamamilə şəffaf olmayan ikili obyekt kimi qəbul edir, bu da incə diff-ləmə və ya sətr səviyyəsində birləşdirmə imkanı vermir.</li>
</ul>
<h3 id="3-veb-müştəri-renderlənməsi">3. Veb Müştəri Renderlənməsi</h3>
<p>Əgər arxitekturanız veb brauzerdə WebAssembly və ya müştəri tərəfi JavaScript vasitəsilə cədvəllərin birbaşa renderlənməsinə əsaslanırsa, XLSX parserləri müştəri tərəfi ikili parserlərinə nisbətən əhəmiyyətli dərəcədə daha yetkin və kənar hallarda renderləmə səhvlərinə daha az meyllidir.</p>
<h3 id="4-üçüncü-tərəf-istifadə-boru-kəmərləri">4. Üçüncü Tərəf İstifadə Boru Kəmərləri</h3>
<p>Əgər xarici müəssisə müştəriləri üçün faylları ixrac edirsinizsə, bir çox sərt korporativ təhlükəsizlik siyasətləri <code>.xlsb</code> fayllarını işarələyir. BIFF12 faylları VBA makrolarını <code>.xlsm</code> faylları kimi eyni şəkildə saxlayabildiyi üçün (ayrı bir uzantı tələb etmədən), bəzi poçt filtrləri və firewall skanerları <code>.xlsb</code> yükləmələrini potensial makro daşıyan təhdidlər kimi karantinə alır.</p>
<h2 id="6-xülasə-müqayisəsi-hansı-format-qalib-gəlir">6. Xülasə Müqayisəsi: Hansı Format Qalib Gəlir?</h2>
<table>
<thead>
<tr>
<th style="text-align:left">Xüsusiyyət</th>
<th style="text-align:left">XLSX</th>
<th style="text-align:left">XLSB</th>
<th style="text-align:left">Qalib</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Oxuma / Təhlil Sürəti</strong></td>
<td style="text-align:left">Orta ilə Zəif</td>
<td style="text-align:left">İnanılmaz Sürətli</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Yazma / Yaratma Sürəti</strong></td>
<td style="text-align:left">CPU-Intensiv</td>
<td style="text-align:left">Sürətli</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Fayl Sıxılması</strong></td>
<td style="text-align:left">Yaxşı</td>
<td style="text-align:left">Əla (~40-50% smaller)</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Yaddaş Ayırma</strong></td>
<td style="text-align:left">Yüksək (Ağır GC təzyiqi)</td>
<td style="text-align:left">Aşağı (Birbaşa bayt oxuma)</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Alət Uyğunluğu</strong></td>
<td style="text-align:left">Ümumi</td>
<td style="text-align:left">Yüksək, lakin seçici</td>
<td style="text-align:left"><strong>XLSX</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Təhlükəsizlik Skaninqi Çətinliyi</strong></td>
<td style="text-align:left">Minimum</td>
<td style="text-align:left">Bəzən yanlış pozitivlər</td>
<td style="text-align:left"><strong>XLSX</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Makro Qabiliyyəti</strong></td>
<td style="text-align:left">Xeyr (<code>.xlsm</code> tələb olunur)</td>
<td style="text-align:left">Bəli (Makroları yerli olaraq dəstəkləyir)</td>
<td style="text-align:left"><strong>Bağlama</strong></td>
</tr>
</tbody>
</table>
<h2 id="7-tərtibatçının-qərarı">7. Tərtibatçının Qərarı</h2>
<p>Aşağıdakı hallarda <strong>XLSX</strong> istifadə edin:</p>
<ul>
<li>Fayllar kiçik və ya orta ölçüdədir (&lt; 50,000 sətir).</li>
<li>Fayllarınız üçüncü tərəf SaaS platformaları və ya istehlakçı tətbiqləri (məsələn, Google Sheets) tərəfindən qəbul edilməlidir.</li>
<li>Faylı oxuyan son müştərinin mühitini nəzarət edə bilməzsiniz.</li>
</ul>
<p>Aşağıdakı hallarda <strong>XLSB</strong>-yə keçin:</p>
<ul>
<li>Daxili boru kəmərləri, toplu işlər, ETL sistemləri və ya böyük məlumat çıxarışlarını (&gt; 100,000 sətir) idarə edən işçi tapşırıqları yaradırsınız.</li>
<li>Serverləriniz cədvəl seriyalaşdırılması və ya deserializasiyası zamanı yaddaşın kifayət etməməsi (OOM) xətaları ilə qarşılaşıb.</li>
<li>Böyük təkrarlanan maliyyə modelləri və ya məlumat ixracları üçün S3/blob saxlama izlərini və şəbəkə ötürmə vaxtını minimuma endirməlisiniz.</li>
</ul>
<p>XLSB-ə keçid adətən ixrac xidmətinizdə konfiqurasiya sətirini dəyişdirmək qədər sadədir, lakin bu, adətən kod optimizasiyası üçün həftələr tələb edən 3x‑5x arası ötürmə sürəti artımını təmin edir.</p>
<h2 id="tez-tez-soruşulan-suallar-faq">Tez-tez Soruşulan Suallar (FAQ)</h2>
<p>**Q1: <a href="https://docs.fileformat.com/spreadsheet/xlsb/">XLSB</a> faylı, <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> faylı ilə tam eyni sətir və sütun limitlərini dəstəkləyirmi?
Bəli; həm XLSB, həm də XLSX eyni cədvəl limitini – hər iş vərəqi üçün 1 048 576 sətir və 16 384 sütun – paylaşır.</p>
<p>**Q2: XLSB faylı, fayl uzantısını dəyişdirmədən VBA makrolarını təhlükəsiz şəkildə saxlaya bilərmi?
Bəli, XLSX‑dən fərqli olaraq (kodun işləməsi üçün XLSM kimi saxlanmasını tələb edir), XLSB eyni <code>.xlsb</code> fayl formatı daxilində ikili VBA makro saxlamasını təbii olaraq dəstəkləyir.</p>
<p>**Q3: Hər iki format artıq ZIP ilə sıxılmış olduğu halda, faylı XLSB kimi saxlamaq onun ölçüsünü niyə azaldır?
XLSB uzun mətn işarələmə etiketlərini aradan qaldırır və hüceyrə mövqelərini, qeydləri və xam ədədi dəyərləri sıx ikili bayt axınlarına kodlayır ki, bu axınlar adi XML sətirlərindən çox daha sıx sıxılır.</p>
<p>**Q4: Google Sheets birbaşa XLSB fayllarını idxal edib redaktə edə bilərmi?
Xeyr; Google Sheets <code>.xlsb</code> fayllarını yerli olaraq birbaşa aça və ya çevirə bilmir, idxal etməzdən əvvəl onları <code>.xlsx</code> və ya CSV formatına çevirməyinizi tələb edir.</p>
<p>**Q5: XLSB faylları XLSX fayllarına nisbətən məlumat korlanmasına daha çox meyllidirmi?
XML faylları qismən korlandıqda bəzən mətn redaktoru ilə əl ilə yoxlanıb təmir oluna bilsə də, ikili BIFF12 axınları dəqiq bayt ofsetləri tələb edir və struktur sektorları zədələnərsə əl ilə bərpa etmək çətindir.</p>
<h2 id="baxın">Baxın</h2>
<ul>
<li><a href="https://blog.fileformat.com/en/spreadsheet/csv-vs-xlsx-vs-ods-in-2026-best-spreadsheet-format-for-developers/">2026-ci ildə CSV vs XLSX vs ODS: İnkişafçılar üçün ən yaxşı cədvəl formatı</a></li>
<li><a href="https://blog.fileformat.com/en/spreadsheet/xls-vs-xlsx-vs-xlsm-vs-xlsb-choosing-the-right-spreadsheet-format/">XLS vs XLSX vs XLSM vs XLSB - Düzgün Cədvəl Formatını Seçmək</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/what-is-excel/">Excel nədir? Bilməli olduğunuz əsas məlumatlar</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/excel-file-extensions-xlsx-xlsm-xls-xltx-xltm/">Excel Fayl Formatları: XLSX, XLSM, XLS, XLTX, XLTM</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/xls-vs-xlsx/">XLS və XLSX arasındakı fərq</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
