<?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 pret XLSX on File Format Blog</title>
    <link>https://blog.fileformat.com/lv/tag/xlsb-pret-xlsx/</link>
    <description>Recent content in XLSB pret XLSX on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>lv</language>
    <lastBuildDate>Wed, 30 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/lv/tag/xlsb-pret-xlsx/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>XLSB vs XLSX lieliem datu kopumiem: Izstrādātāja veiktspējas ceļvedis</title>
      <link>https://blog.fileformat.com/lv/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/lv/spreadsheet/xlsb-vs-xlsx-for-large-data-sets-a-developers-performance-guide/</guid>
      <description>Uzziniet, kāpēc XLSB pārspēj XLSX lieliem datu kopumiem. Izpētiet saspiešanas mehānismus, atmiņas patēriņu, Python/C# veiktspējas testus un kad izvēlēties bināro formātu pār XML.</description>
      <content:encoded><![CDATA[<p><strong>Pēdējoreiz atjaunināts</strong>: 30 sept., 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="xlsb-vs-xlsx-lieliem-datu-kopumiem-izstrādātāja-veiktspējas-ceļvedis">XLSB vs XLSX lieliem datu kopumiem: Izstrādātāja veiktspējas ceļvedis</h2>
<p>Ja jūs veidojat datu caurules, aizmugures atskaites dzinējus vai analītikas rīkus, kas integrējas ar Microsoft Excel, jums, visticamāk, ir saskāries ar &ldquo;sienu&rdquo;.</p>
<p>Lietotājs augšupielādē 450,000 rindu darblapu. Jūsu serveris palaiž darbinieku pavedienus, atmiņas patēriņš strauji pieaug līdz gigabaitiem, atkritumu savākšana aptur izpildlaiku, un jūsu izpilde beidzas ar laika limitu. Jūs pārbaudāt slodzi: tas ir standarta <code>.xlsx</code> fails.</p>
<p>Lai to atrisinātu, izstrādātāji bieži pavada dienas, īstenojot blokēšanu, straumējošus parsētājus vai pārvietojot failus uz fona darbiniekiem. Tomēr viena no visefektīvākajām optimizācijām neprasa nekādu arhitektūras pārplānošanu: faila paplašinājuma maiņa no <code>.xlsx</code> uz <code>.xlsb</code>.</p>
<p>Šajā ceļvedī mēs iedziļināmies abu formātu struktūrā, izpētām, kāpēc to iekšējās arhitektūras rada radikāli atšķirīgas veiktspējas īpašības, salīdzinām konkrētus veiktspējas rādītājus Python un .NET vidē, un izklāstām skaidrus noteikumus, kad ražošanā jāizmanto binārie darblapas.</p>
<h2 id="1-zem-virsmas-openxml-pret-biff12">1. Zem virsmas: OpenXML pret BIFF12</h2>
<p>Lai izprastu, kāpēc veiktspēja tik dramatiski atšķiras lielos datu kopumos, mums jāaplūko, kā katrs formāts saglabā ierakstus uz diska.</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>Gan <code>.xlsx</code> gan <code>.xlsb</code> faili ir saspiesti ZIP konteineri, kas atbilst Open Packaging Conventions (OPC). Ja pārdēvēsit kādu no failiem uz <code>.zip</code> un to izpakosiet, redzēsiet pazīstamu direktoriju struktūru: <code>_rels</code>, <code>docProps</code> un <code>xl/worksheets/</code>.</p>
<p>Svarīgā atšķirība atrodas <code>xl/worksheets/</code> mapē:</p>
<ul>
<li><strong>XLSX saglabā lapas kā vienkāršu XML tekstu (<code>sheet1.xml</code>).</strong></li>
<li><strong>XLSB saglabā lapas kā īpašus bināros plūsmas (<code>sheet1.bin</code>), kodētas, izmantojot Microsoft BIFF12 (Binary Interchange File Format 12).</strong></li>
</ul>
<h3 id="kā-xlsx1-kodē-datus-xml-dom-pārlieku-slodze">Kā <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> kodē datus (XML DOM pārlieku slodze)</h3>
<p>XLSX darblapā katra šūna tiek deklarēta ar skaidriem XML tagiem:</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>Lasa šo rindu, jūsu izpildlaiks jāveic:</p>
<ol>
<li>Atspiediet neapstrādāto deflate plūsmu uz tekstu.</li>
<li>Tokenizējiet un parsējiet virknes rakstzīmes uz XML DOM vai SAX notikumu plūsmu.</li>
<li>Validējiet atvēršanas un aizvēršanas tagus (<code>&lt;c&gt;</code>, <code>&lt;/c&gt;</code>, <code>&lt;v&gt;</code>, <code>&lt;/v&gt;</code>).</li>
<li>Atrisiniet virkņu meklēšanu no atsevišķas <code>sharedStrings.xml</code> tabulas.</li>
<li>Parsējiet ASCII tekstu <code>&quot;98234.55&quot;</code> uz IEEE 754 64‑bitu peldošā komata skaitli.</li>
</ol>
<p>Katrs atsevišķais šūna rada CPU pārslodzi virkņu parsēšanai, virkņu piešķiršanai un leksiskajai analīzei. Reizinot to ar 500 000 rindām un 30 kolonnām (15 miljoni šūnu), CPU patērē daudz vairāk ciklu, parsējot sintaksi, nekā apstrādājot domēna vērtības.</p>
<h3 id="kā-xlsb3-kodē-datus-biff12-binārais-plūsma">Kā <a href="https://docs.fileformat.com/spreadsheet/xlsb/">XLSB</a> kodē datus (BIFF12 binārais plūsma)</h3>
<p>BIFF12 pilnīgi atmet teksta serializāciju. Tā vietā, lai izmantotu virkņu marķējumu, dati tiek sakārtoti kā secīga mainīga garuma bināro ierakstu secība:</p>
<pre tabindex="0"><code>[Record Type: 2 bytes] [Record Length: 4 bytes] [Payload: N bytes]
</code></pre><p>Peldošā komata šūna BIFF12 neizmanto virkņu attēlojumus, piemēram, <code>&quot;98234.55&quot;</code>. Tā tiek attēlota tieši:</p>
<ul>
<li>2 baiti ieraksta ID (piemēram, <code>BrtCellRk</code> vai <code>BrtCellReal</code>)</li>
<li>4 baiti kolonnas/rindas indeksiem</li>
<li>8 baiti, kas satur neapstrādātu, IEEE 754 dubultprecizitātes baitu struktūru</li>
</ul>
<p>Kad jūsu parsētājs lasa XLSB failu, tas pilnīgi apiet leksisko parsēšanu. Tas lasa ieraksta galveni, paņem 8 neapstrādātos baitus no bufera, kopē tos tieši atmiņā un pārvieto rādītāju uz priekšu. Nav tagu, ko validēt, nav virknes‑uz‑skaitļa tipa pārveidojumu, un skaitlisko datu UTF‑8 atkodēšanas pārklājs ir nulle.</p>
<h2 id="2-kvantitatīvi-veiktspējas-rādītāji-disks-atmiņa-un-caurplūdība">2. Kvantitatīvi veiktspējas rādītāji: disks, atmiņa un caurplūdība</h2>
<p>Lai ilustrētu reālās pasaules ietekmi, apsveriet simulētu datu kopu, kas satur <strong>750 000 rindas un 25 kolonnas</strong> (sajaukumu ar laika zīmēm, peldošā komata skaitļiem, veseliem skaitļiem un kategoriju kodiem).</p>
<p>Zemāk esošie testi novērtē identisku tabulu datu saglabāšanu gan kā XLSX, gan kā XLSB.</p>
<h3 id="testa-vide">Testa vide</h3>
<ul>
<li><strong>CPU:</strong> AMD Ryzen 9 5900X (12 kodoli, 24 pavedieni)</li>
<li><strong>RAM:</strong> 64 GB DDR4‑3600</li>
<li><strong>Glabāšana:</strong> PCIe 4.0 NVMe SSD</li>
<li><strong>Izpildlaiks:</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="galvenie-veiktspējas-rādītāji">Galvenie veiktspējas rādītāji</h3>
<table>
<thead>
<tr>
<th style="text-align:left">Metrika</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 / Uzlabojums</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Faila izmērs uz diska</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% mazāk</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Saglabāšanas / Serializācijas Laiks</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 ātrāk</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Lasīšanas Laiks (Python DOM Parsētājs)</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 ātrāk</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Lasīšanas laiks (Rust/C dzinējs)</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 ātrāk</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Maksimālā kaudzes piešķiršana lasīšanas laikā</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% samazinājums</strong></td>
</tr>
</tbody>
</table>
<h3 id="kāpēc-xlsb-faili-ir-mazāki">Kāpēc XLSB faili ir mazāki</h3>
<p>Lai gan abi formāti izmanto standarta ZIP saspiešanu, binārie plūsmu dati tiek saspiesti daudz efektīvāk nekā pārblīvētais XML teksts:</p>
<ol>
<li><strong>Redundanta sintakse tiek likvidēta:</strong> XML satur atkārtotas birkas (<code>&lt;c r=&quot;AA1&quot; s=&quot;1&quot;&gt;</code>) katrā ierakstā. Lai gan ZIP saspiešana mazinā atkārtoto virkņu, nesaspiestais datu plūsmas apjoms ir milzīgs.</li>
<li><strong>Skaitļu blīvums:</strong> XML, skaitlim <code>12345678.9012</code> nepieciešami 14 baiti ASCII teksta. BIFF12 formātā tas tiek saglabāts kā 8 baitu dubults (vai iepakots 4 baitu <code>RK</code> ierakstā, ja tas atbilst konkrētiem precizitātes noteikumiem).</li>
</ol>
<h2 id="3-atmiņas-patēriņš-un-atkritumu-savākšanas-spiediens">3. Atmiņas patēriņš un atkritumu savākšanas spiediens</h2>
<p>Web pakalpojumiem un mikroservisiem, kas apstrādā vienlaicīgus pieprasījumus, CPU ātrums ir tikai puse no cīņas; <strong>atmiņas nospiedums</strong> ir tas, kur lietojumprogrammas patiesi neizdodas.</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>Kad XML parsētājs apstrādā 100 MB XLSX failu, tam jāizveido tūkstošiem pārejošu virkņu tokenu, virkņu gabalu buferu un vārdnīcas meklējumu. Atkritumu savākšanas valodās (Java, C#, Go, Node.js, Python) tas rada ekstremālu kaudzes fragmentāciju un liek izpildlaikam bieži pārtraukt darbību atkritumu savākšanas (GC) pauzēs.</p>
<p>Tā kā XLSB parsēšana darbojas tieši uz fiksēta platuma baitu šķēlēm, parseri var nolasīt datus uz steka piešķirtām struktūrām vai atkārtoti lietojamiem baitu buferiem. Rezultātā ir būtiski samazināts atmiņas nosējs un nav nekāda izpildlaika piešķiršanas traucēšanas.</p>
<h2 id="4-izstrādātāja-īstenošanas-piemēri">4. Izstrādātāja īstenošanas piemēri</h2>
<p>Apskatīsim, kā izmantot XLSB vispārējās izstrādātāju rīku ķēdēs.</p>
<h3 id="python-migrācija-no-openpyxl-uz-calamine--pyxlsb">Python: migrācija no OpenPyXL uz Calamine / PyXLSB</h3>
<p>Standarta <code>pandas.read_excel('data.xlsx')</code> pēc noklusējuma izmanto <code>openpyxl</code>, kas izveido smagu atmiņā esošu koku.</p>
<p>Lai apstrādātu lielus XLSB failus ar maksimālu ātrumu, izmantojiet Rust-dzinēto <code>calamine</code> dzinēju (pieejamu caur <code>python-calamine</code> un integrētu mūsdienu Pandas):</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>Ja jūs iterējat pār milzīgiem datu kopumiem rindas pa rindai, neielādējot visu matricu DataFrame, <code>pyxlsb</code> nodrošina vieglu straumēšanas iteratoru:</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-augstas-veiktspējas-straumes-uzņemšana">C# / .NET: Augstas veiktspējas straumes uzņemšana</h3>
<p>.NET vidē bibliotēkas kā <code>ClosedXML</code> vai <code>EPPlus</code> ir lieliskas standarta ģenerēšanai, bet lielu failu apstrādei bez atmiņas izsīkuma <code>ExcelDataReader</code> ar XLSB atbalstu ir ārkārtīgi ātrs:</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-arhitektūras-kompromisi-kad-nejālieto-xlsb">5. Arhitektūras kompromisi: Kad NEJĀLIETO XLSB</h2>
<p>Neskatoties uz pārspīlētajām veiktspējas priekšrocībām, XLSB nav vispārējais risinājums. Jums jāapsver vairāki operacionālie kompromisi, pirms to ieviest visā jūsu sistēmā:</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-ekosistēma-un-bibliotēku-atbalsts">1. Ekosistēma un bibliotēku atbalsts</h3>
<ul>
<li><strong>XLSX:</strong> Universāls. Praktiski katra valoda, bibliotēka, SaaS rīks (Google Sheets, Airtable, Tableau) un tīmekļa parsētājs atbalsta OpenXML iebūvēti.</li>
<li><strong>XLSB:</strong> Mazāk izplatīts. Lai gan Excel, LibreOffice un izaugušas izstrādātāju bibliotēkas (<code>ExcelDataReader</code>, <code>pyxlsb</code>, <code>calamine</code>, <code>Aspose</code>) to atbalsta, daudzas vieglas pakotnes vai tīri tīmekļa balstīti JavaScript parsētāji (piemēram, vecākas <code>SheetJS</code> versijas) ir ierobežoti vai tikai lasīšanas režīmā.</li>
</ul>
<h3 id="2-git-un-versiju-kontroles-diffēšana">2. Git un versiju kontroles diffēšana</h3>
<ul>
<li><strong>XLSX:</strong> Tā kā tas satur teksta XML ZIP konteinerā, komandrindas utilītprogrammas un Git āķi var atpakot un formatēt XML, lai radītu lasāmus strukturālus diffus starp revīzijām.</li>
<li><strong>XLSB:</strong> Tīri bināri dati. Versiju kontroles sistēmas to apstrādā kā necaurredzamu bināru objektu, izslēdzot jebkādas iespējas veikt smalku diffēšanu vai līniju līmeņa sapludināšanu.</li>
</ul>
<h3 id="3-tīmekļa-klienta-renderēšana">3. Tīmekļa klienta renderēšana</h3>
<p>Ja jūsu arhitektūra balstās uz izklājlapu attēlošanu tieši pārlūkā, izmantojot WebAssembly vai klienta‑pusē JavaScript, XLSX parsētāji ir ievērojami briedāki un mazāk pakļauti neparastu attēlošanas kļūdu riskam nekā klienta‑pusē binārie parsētāji.</p>
<h3 id="4-trešo-pušu-uzņemšanas-cauruļvadi">4. Trešo pušu uzņemšanas cauruļvadi</h3>
<p>Ja eksportējat failus ārējiem uzņēmuma klientiem, daudzas stingras korporatīvās drošības politikas atzīmē <code>.xlsb</code> failus. Tā kā BIFF12 faili var saglabāt VBA makro komandas identiski kā <code>.xlsm</code> faili (nepieprasot atsevišķu paplašinājumu), daži e-pasta filtri un ugunsmūra skeneri izolē <code>.xlsb</code> augšupielādes kā potenciālus makro nesējus draudus.</p>
<h2 id="6-kopsavilkuma-salīdzinājums-kurš-formāts-uzvar">6. Kopsavilkuma salīdzinājums: Kurš formāts uzvar?</h2>
<table>
<thead>
<tr>
<th style="text-align:left">Īpaļība</th>
<th style="text-align:left">XLSX</th>
<th style="text-align:left">XLSB</th>
<th style="text-align:left">Uzvarētājs</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Lasīšanas / Parsēšanas ātrums</strong></td>
<td style="text-align:left">Mērens līdz slikts</td>
<td style="text-align:left">Ātri kā zibens</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Rakstīšanas / Ģenerēšanas ātrums</strong></td>
<td style="text-align:left">CPU intensīvs</td>
<td style="text-align:left">Ātrs</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Failu saspiešana</strong></td>
<td style="text-align:left">Labi</td>
<td style="text-align:left">Izcils (~40-50% mazāks)</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Atmiņas piešķiršana</strong></td>
<td style="text-align:left">Augsts (Liels GC spiediens)</td>
<td style="text-align:left">Zems (Tieša baitu lasīšana)</td>
<td style="text-align:left"><strong>XLSB</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Rīku savietojamība</strong></td>
<td style="text-align:left">Universāls</td>
<td style="text-align:left">Augsts, bet selektīvs</td>
<td style="text-align:left"><strong>XLSX</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Drošības skenēšanas berze</strong></td>
<td style="text-align:left">Minimāls</td>
<td style="text-align:left">Periodiski nepatiesi pozitīvi</td>
<td style="text-align:left"><strong>XLSX</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Makro iespēja</strong></td>
<td style="text-align:left">Nē (<code>.xlsm</code> nepieciešams)</td>
<td style="text-align:left">Jā (Atbalsta makrokomandas iebūvēti)</td>
<td style="text-align:left"><strong>Saistīt</strong></td>
</tr>
</tbody>
</table>
<h2 id="7-izstrādātāja-spriedums">7. Izstrādātāja spriedums</h2>
<p>Izmantojiet <strong>XLSX</strong>, ja:</p>
<ul>
<li>Faili ir mazi līdz vidēji lieli izmērā (&lt; 50,000 rows).</li>
<li>Jūsu failus jāiekļauj trešo pušu SaaS platformās vai patērētāju lietotnēs (piem., Google Sheets).</li>
<li>Jūs nevarat kontrolēt gala klienta vidi, kas lasa failu.</li>
</ul>
<p>Pārslēdzieties uz <strong>XLSB</strong>, ja:</p>
<ul>
<li>Jūs veidojat iekšējus cauruļvādus, grupas darbus, ETL sistēmas vai darbinieku uzdevumus, kas apstrādā milzīgus datu izvilkumus (&gt; 100,000 rows).</li>
<li>Jūsu serveri saskaras ar atmiņas izsīkuma (OOM) kļūdām, veicot izklājlapas serializāciju vai deserializāciju.</li>
<li>Jums jāsamazina S3/Blob glabāšanas nospiedumi un tīkla pārsūtīšanas laiks lieliem periodiskajiem finanšu modeļiem vai datu eksportiem.</li>
</ul>
<p>Pārslēgšanās uz XLSB bieži vien ir tik vienkārša kā konfigurācijas virknes maiņa jūsu eksportēšanas pakalpojumā, tomēr tā nodrošina 3‑ līdz 5‑reizes lielāku caurlaidību, kas parasti prasa nedēļas ilgu koda optimizāciju.</p>
<h2 id="biežāk-uzdotie-jautājumi-buj">Biežāk uzdotie jautājumi (BUJ)</h2>
<p>**Q1: Vai <a href="https://docs.fileformat.com/spreadsheet/xlsb/">XLSB</a> fails atbalsta tieši tādus pašus rindu un kolonnu ierobežojumus kā <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> fails?
Jā; gan XLSB, gan XLSX dalās tajā pašā režģa griestā – 1 048 576 rindas un 16 384 kolonnas katrā darblapā.</p>
<p>**Q2: Vai XLSB fails var droši saglabāt VBA makrokomandas, nemainot tā faila paplašinājumu?
Jā, atšķirībā no XLSX (kas, lai izpildītu kodu, jāuzglabā kā XLSM), XLSB atbalsta bināru VBA makro uzglabāšanu iebūvēti tajā pašā <code>.xlsb</code> faila formātā.</p>
<p>**Q3: Kāpēc saglabājot failu kā XLSB, tā izmērs samazinās, ja abi formāti jau ir ZIP saspiežami?
XLSB likvidē garlaicīgus teksta marķēšanas tagus un kodē šūnu pozīcijas, ierakstus un neapstrādātas skaitliskās vērtības ciešos bināros baitu plūsmos, kas saspiest daudz blīvāk nekā vienkāršas XML virknes.</p>
<p>**Q4: Vai Google Sheets var tieši importēt un rediģēt XLSB failus?
Nē; Google Sheets nevar dabiski atvērt vai konvertēt <code>.xlsb</code> failus tieši, tāpēc tos jākonvertē uz <code>.xlsx</code> vai CSV pirms importēšanas.</p>
<p>**Q5: Vai XLSB faili ir vairāk pakļauti datu bojājumiem nekā XLSX faili?
Lai gan XML failus dažkārt var manuāli pārbaudīt vai labot ar teksta redaktoru, ja tie ir daļēji bojāti, binārie BIFF12 plūsmu dati prasa stingras baitu nobīdes un ir grūti atjaunojami manuāli, ja struktūras sektori ir bojāti.</p>
<h2 id="skatīt-arī">Skatīt arī</h2>
<ul>
<li><a href="https://blog.fileformat.com/en/spreadsheet/csv-vs-xlsx-vs-ods-in-2026-best-spreadsheet-format-for-developers/">CSV vs XLSX vs ODS 2026. gadā: Labākais izklājlapu formāts izstrādātājiem</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 – Pareiza izklājlapas formāta izvēle</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/what-is-excel/">Kas ir Excel? Galvenā informācija, ko jums jāzina</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/excel-file-extensions-xlsx-xlsm-xls-xltx-xltm/">Excel failu formāti: XLSX, XLSM, XLS, XLTX, XLTM</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/xls-vs-xlsx/">Atšķirība starp XLS un XLSX</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
