<?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>Taulukkolaskennan turvallisuus on File Format Blog</title>
    <link>https://blog.fileformat.com/fi/tag/taulukkolaskennan-turvallisuus/</link>
    <description>Recent content in Taulukkolaskennan turvallisuus on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>fi</language>
    <lastBuildDate>Wed, 28 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/fi/tag/taulukkolaskennan-turvallisuus/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Taulukkolaskennan turvallisuusparhaat käytännöt tietomurtojen ja tietovuotojen estämiseksi</title>
      <link>https://blog.fileformat.com/fi/spreadsheet/spreadsheet-security-best-practices-for-developers/</link>
      <pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fi/spreadsheet/spreadsheet-security-best-practices-for-developers/</guid>
      <description>Opettele olennaiset taulukkolaskennan turvallisuusparhaat käytännöt kehittäjille. Estä kaavainsyötöt (CSV/XLSX), puhdista syötteet, hallitse käyttöoikeuksia ja vältä tietovuotoja.</description>
      <content:encoded><![CDATA[<p><strong>Viimeksi päivitetty</strong>: 20 elokuu, 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/spreadsheet-security-best-practices-for-developers.png#center"
         alt="Spreadsheet Security Best Practices to Prevent Breaches &amp; Data Leaks"/> 
</figure>

<h2 id="taulukkolaskennan-turvallisuusparhaat-käytännöt-kehittäjille">Taulukkolaskennan turvallisuusparhaat käytännöt kehittäjille</h2>
<p>Laskentataulukot ohjaavat nykyaikaisia liiketoimintaprosesseja. Talousennusteista ja johtoryhmän raporteista massiivisiin käyttäjien tuontiin, laskutuksen vientiin ja koneoppimisen aineistoihin, muodot kuten <a href="https://docs.fileformat.com/spreadsheet/xlsx/"><code>.xlsx</code></a>, <a href="https://docs.fileformat.com/spreadsheet/xlsm/"><code>.xlsm</code></a> ja <a href="https://docs.fileformat.com/spreadsheet/csv/"><code>.csv</code></a> ovat perusta yritysvirtaustoiminnoille. Tämän yleisyyden vuoksi ohjelmistokehittäjät kirjoittavat säännöllisesti koodia, joka on suunniteltu luomaan, vastaanottamaan, jäsentämään, muuntamaan ja viemään laskentataulukko‑tiedostoja.</p>
<p>Kuitenkin kehittäjät käsittelevät usein laskentataulukoita harmittomina taulukkotietona – digitaalinen vastaavuus tasaiselle tekstitiedostolle. Todellisuudessa nykyaikaiset laskentataulukot ovat aktiivisia suoritusympäristöjä, jotka pystyvät suorittamaan dynaamisia laskelmia, ratkaisemaan ulkoisia päätepisteitä, kutsumaan järjestelmämakroja ja upottamaan mielivaltaisia binääriobjekteja. Jos niitä käsitellään huolimattomasti, laskentataulukkojen käsittelyputket muuttuvat houkutteleviksi kohteiksi <strong>Remote Code Execution (RCE)</strong>, <strong>Formula Injection (CSV Injection)</strong>, <strong>Server-Side Request Forgery (SSRF)</strong>, <strong>XML External Entity (XXE)</strong> -hyökkäyksille sekä <strong>luottamuksellisten tietojen vuodoille</strong>.</p>
<p>Alla on tekninen opas puolustavien insinöörikäytäntöjen toteuttamiseen taulukkolaskentatiedostoja käsiteltäessä koko ohjelmistopinoissasi.</p>
<h2 id="1-kaavainsyötön-neutralointi-csv11--taulukkolaskenta-injektio">1. Kaavainsyötön neutralointi (<a href="https://docs.fileformat.com/spreadsheet/csv/">CSV</a> &amp; Taulukkolaskenta-injektio)</h2>
<p>Kaavainsyöttö—joka tunnetaan usein myös CSV‑insyönninä—tapahtuu, kun epäluotettavaa käyttäjän syötettä kirjoitetaan suoraan taulukkolaskentasoluihin ilman asianmukaista puhdistusta.</p>
<p>Kun loppukäyttäjä tai järjestelmänvalvoja avaa luodun tiedoston Microsoft Excelissä, Google Sheetsissä tai LibreOffice Calcissa, kaikki soluarvot, jotka alkavat tietyillä toiminnallisilla merkeillä, tulkitaan ja suoritetaan aktiivisina kaavoina sen sijaan, että ne näytettäisiin staattisena tekstinä.</p>
<h3 id="uhkamekaniikka">Uhkamekaniikka</h3>
<p>Hyökkääjät käyttävät kaavainsyöttöä toteuttaakseen kahta pääasiallista hyökkäysluokkaa:</p>
<ol>
<li><strong>Tietojen vuotaminen:</strong> Hyödyntämällä funktioita kuten <code>HYPERLINK</code> hiljaisesti liittämällä arkaluonteista viereistä solutietoa hyökkääjän hallitsemaan kyselyparametriin.</li>
<li><strong>Komennon suoritus:</strong> Hyödyntämällä Dynamic Data Exchange (DDE) -kaavoja (esim. vanhoissa asetuksissa) tai protokollankäsittelijälinkkejä käynnistämään järjestelmäbinaareja tai avaamaan haitallisia URL-osoitteita.</li>
</ol>
<p>Vaarallisia aloitusmerkkejä ovat:</p>
<ul>
<li><code>=</code> (Suora laskenta tai funktion kutsu)</li>
<li><code>+</code> (Kaavan lisäys tai implisiittinen funktiokutsu)</li>
<li><code>-</code> (Kaavan vähennys tai negatiivinen etuliite)</li>
<li><code>@</code> (Dynaamisen taulukon kaavan kutsu nykyaikaisissa Excel-versioissa)</li>
<li><code>\t</code> (Sarkainmerkki) tai <code>\r</code> (Rivinvaihto) (käytetään kiertämään yksinkertaisia suodattimia)</li>
<li><code>|</code> tai <code>%</code> (Putkitetut toiminnot tai komentotulkin kutsut Unix-pohjaisissa taulukkolaskentaohjelmissa)</li>
</ul>
<h3 id="tekninen-puolustus">Tekninen puolustus</h3>
<ul>
<li><strong>Merkin etuliite (Yksittäisen lainausmerkin pakottaminen):</strong> Jos epäluotettava merkkijonosyöte alkaa merkeillä <code>=</code>, <code>+</code>, <code>-</code>, <code>@</code>, <code>\t</code> tai <code>\r</code>, lisää merkkijonoon alussa yksittäinen lainausmerkki (<code>'</code>) ennen sen kirjoittamista soluun. Excel ja LibreOffice käsittelevät alkavaa yksittäistä lainausmerkkiä muotoilukäskynä, pakottaen solun näyttämään sisällön kirjaimellisesti ja poistamalla lainausmerkin näkyvästä tulosteesta.</li>
<li><strong>Tiukat sarjoituskirjastot:</strong> Älä koskaan luo CSV- tai XLSX-tiedostoja käyttämällä raakamerkkijonojen interpolointia (esim. <code>f&quot;{user_input_1},{user_input_2}\n&quot;</code>). Luota testattuihin taulukkomuotoisen sarjoituksen kirjastoihin, jotka hallitsevat RFC 4180 -erottimen pakottamisen, kenttien käärittämisen ja lainausmerkkien kaksinkertaistamisen automaattisesti.</li>
<li><strong>Solutyypin pakottaminen:</strong> Kun luodaan OpenXML (<code>.xlsx</code>) -tiedostoja ohjelmallisesti, määritä solun tietotyyppi eksplisiittisesti <code>String</code> (tai <code>InlineString</code>) sen sijaan, että moottori päätelisi solutyypit arvoista.</li>
</ul>
<h2 id="2-ingestio--ja-jäsentämisputkien-vahvistaminen">2. Ingestio- ja jäsentämisputkien vahvistaminen</h2>
<p>Käyttäjän lataamien taulukkolaskentaohjelmien jäsentäminen altistaa taustajärjestelmät merkittäville jäsennys-tason hyökkäyspinnoille. Nykyaikaiset <code>.xlsx</code>-tiedostot ovat pakattuja ZIP-arkistoja, jotka sisältävät toisiinsa riippuvaisia XML-dokumentteja, jotka noudattavat Open Packaging Conventions (OPC) -standardia.</p>
<p>Luottamattoman XML:n jäsentäminen taustalla avaa palvelusi perinteisille jäsennys-hyökkäyksille, jos jäsennysasetukset jätetään oletusasetuksiin.</p>
<h3 id="lieventämisstrategiat">Lieventämisstrategiat:</h3>
<ul>
<li><strong>Poista DTD:t ja ulkoiset entiteetit (XXE-suojaus):</strong> Varmista, että XML-moottorisi kieltää nimenomaisesti Document Type Definitions (DTD:t) ja poistaa käytöstä ulkoisen skeeman ratkaisemisen (<code>disallow-doctype-decl = true</code>, <code>resolve-external-entities = false</code>). Jos tätä ei tehdä, ladattu <code>.xlsx</code>-tiedosto voi lukea paikallisia palvelintiedostoja (kuten <code>/etc/passwd</code>) tai tutkia sisäisiä pilvipalveluita.</li>
<li><strong>Suojaa purkupommeilta (ZIP-pommit):</strong> Pahantahtoiset käyttäjät voivat lähettää pieniä arkistoja, jotka puretaan kymmeniksi gigatavuiksi toistuvaa XML-dataa, aiheuttaen muistin kaatumisen ja levyn täytymisen. Seuraa purettuja tavuja purkamisen aikana ja aseta tiukat rajoitukset sekä pakatun arkiston koolle että kokonaiselle puretulle muistijalanjäljelle.</li>
<li><strong>Ota käyttöön suoratoistoparsijat:</strong> Vältä massiivisten taulukkolaskentaohjelmien lataamista muistiin perustuviin Document Object Model (DOM) -esityksiin. Suurissa erätuonnissa käytä suoratoistoa, SAX-pohjaisia tai paloittain rivi kerrallaan -iteraattoreita, jotta taustajärjestelmän muistin käyttö pysyy vakiona.</li>
</ul>
<h2 id="3-makrojen-hallinta-ja-aktiivisen-sisällön-puhdistus">3. Makrojen hallinta ja aktiivisen sisällön puhdistus</h2>
<p>Visual Basic for Applications (VBA) -makrot, OLE (Object Linking and Embedding) -kuormat ja upotetut skriptit edustavat joitakin pysyvimpiä hyökkäysvektoreita työpöytälaskennassa.</p>
<h3 id="kehittäjän-parhaat-käytännöt">Kehittäjän parhaat käytännöt:</h3>
<ul>
<li><strong>Pakota tiukat tiedostopäätepolitiikat:</strong> Hylkää makroja sisältävät tiedostomuodot (<code>.xlsm</code>, <a href="https://docs.fileformat.com/spreadsheet/xltm/"><code>.xltm</code></a>, <a href="https://docs.fileformat.com/spreadsheet/xlsb/"><code>.xlsb</code></a> tai vanhentunut <a href="https://docs.fileformat.com/spreadsheet/xls/"><code>.xls</code></a>) API-yhdyskäytävässäsi, ellei ole vahvistettua, muuttumatonta liiketoimintavaatimusta niiden käsittelemiseksi.</li>
<li><strong>Pakota puhtaat <code>.xlsx</code>-muodot:</strong> Standardi <code>.xlsx</code>-kontainerimuoto on rakenteellisesti suunniteltu ilman makrotukea. Mikä tahansa makrokoodi, joka on sisällytetty <code>.xlsx</code>-tiedostoon, tekee tiedostomuodosta virheellisen yhteensopivissa Office-moottoreissa.</li>
<li><strong>Tarkasta ja poista aktiiviset virrat:</strong> Jos palvelusi käsittelee satunnaisia liitteitä, integroi automatisoitu puhdistuskierros, joka poistaa VBA-projektin binaarit (<code>vbaProject.bin</code>), ActiveX-ohjaimet ja upotetut OLE-paketit ennen tiedostojen tallentamista objektivarastoon tai niiden tarjoamista muille asiakkaille.</li>
</ul>
<h2 id="4-ssrfn-estäminen-headless-esikatseluissa-ja-pdf-muunnoksissa">4. SSRF:n estäminen headless-esikatseluissa ja PDF-muunnoksissa</h2>
<p>Modernit yrityssovellukset tarjoavat yleisesti asiakirjan esikatselukortteja tai automatisoitua PDF-raporttien luontia. Tämän toteuttamiseksi taustajärjestelmät käyttävät usein headless-toimisto-ohjelmia (esim. LibreOffice headless-tilassa) tai headless-selaimia.</p>
<p>Taulukot voivat sisältää dynaamisia ulkoisia riippuvuuksia, kuten linkitettyjä kuvaformuloita (<code>=IMAGE(&quot;http://internal-host/...&quot;)</code>), etä-OData-linkkejä tai upotettuja verkkokehys. Kun headless-prosessori renderöi taulukon, se saattaa automaattisesti hakea nämä linkitetyt resurssit, mikä aiheuttaa <strong>Server-Side Request Forgery (SSRF)</strong> -haavoittuvuuden.</p>
<h3 id="kerrostetun-puolustuksen-toimenpiteet">Kerrostetun puolustuksen toimenpiteet:</h3>
<ul>
<li><strong>Eristä muunnosympäristöt:</strong> Aja headless-renderöintipalveluita eristettyinä mikrosäiliöinä tai tilapäisinä serverittöminä funktioina, jotka on varustettu vähäisillä järjestelmäoikeuksilla.</li>
<li><strong>Pakota verkkoeristys:</strong> Sijoita asiakirjan renderöintityöntekijät rajoitettuihin aliverkkoihin, joilla ei ole reitityspääsyä sisäiseen VPC:hen, yksityisiin tietokantoihin tai pilven metadata-päätepisteeseen (<code>169.254.169.254</code>).</li>
<li><strong>Poista käytöstä etäresurssien ratkaisu:</strong> Lähetä konfiguraatio‑lippuja renderöintimoottorillesi estääksesi verkkoon perustuvan resurssien ratkaisemisen (esim. ohjeistamalla LibreOffice hylkäämään ulkoisten resurssien lataamisen vientirutiinien aikana).</li>
</ul>
<h2 id="5-taulukon-suojaus-vs-todellinen-kryptografinen-tiedostojen-salaus">5. Taulukon suojaus vs. todellinen kryptografinen tiedostojen salaus</h2>
<p>Yksi yleisimmistä pysyvistä väärinkäsityksistä tuote-tiimeissä on ero Excelin natiivin <strong>Worksheet/Workbook Protection</strong>- ja <strong>Cryptographic Encryption</strong> -suojausten välillä.</p>
<h3 id="lukittujen-solujen-harha">Lukittujen solujen harha</h3>
<p>Excelin natiivit &ldquo;Protect Sheet&rdquo;- ja &ldquo;Protect Workbook&rdquo; -ominaisuudet ovat käyttöliittymätason toimintoja, jotka on suunniteltu estämään tahattomat muokkaukset toimistotyöntekijöiltä. Ne eivät käytä kryptografisia pääsyrakenteita. Peruskomentosarja voi poistaa arkki-suojauksen tunnisteet suoraan taustalla olevista XML-tiedostoista <code>.xlsx</code>-arkistossa sekunneissa, tehden rajoituksista hyödyttömiä tahallista manipulointia vastaan.</p>
<h3 id="todellinen-kryptografinen-suojaus">Todellinen kryptografinen suojaus:</h3>
<ul>
<li><strong>Transport and At-Rest Encryption:</strong> Tallenna arkaluontoiset taulukko-viennit tallennusvolyymeihin, jotka on salattu nykyaikaisilla standardeilla (esim. AWS S3 SSE-KMS, Azure Storage Encryption) ja siirrä ne tiukasti TLS 1.3:n yli.</li>
<li><strong>Standard OpenXML Encryption:</strong> Kun taulukko täytyy suojata salasanalla jakelua varten, käytä teollisuusstandardia AES-256 OpenXML -salausta perinteisen Office XOR -salausten sijaan.</li>
<li><strong>Tietokantatasoinen tietojen poistaminen (RBAC):</strong> Ota roolipohjainen käyttövalvonta käyttöön tietokanta- ja sovelluskerroksissa ennen taulukkolaskentatiedoston luomista. Jos vientikäyttäjällä ei ole oikeutta tarkastella sosiaaliturvatunnuksia, sisäisiä tili‑ID:itä tai bruttokatteita, poista kyseiset sarakkeet kyselystä kokonaan. Älä koskaan jätä arkaluonteisia tietoja &ldquo;piilotettuihin&rdquo; riveihin tai sarakkeisiin.</li>
</ul>
<h2 id="6-pääsynhallinta-jakelu-ja-auditointilokit">6. Pääsynhallinta, jakelu ja auditointilokit</h2>
<p>Koska taulukkolaskentatiedostot ovat siirrettäviä, itsenäisiä tiedostoja, ne ohittavat usein keskitetyt reunapaketin valvonnat ladattaessa.</p>
<h3 id="kehittäjien-parhaat-käytännöt">Kehittäjien parhaat käytännöt:</h3>
<ul>
<li><strong>Tarjoa todennetuilla, lyhytikäisillä esisigneeratuilla URL-osoitteilla:</strong> Älä koskaan sijoita luotuja taulukkolaskentavientoja julkisesti saatavilla oleviin säiliöihin. Luo aikarajoitettuja esisigneerattuja URL-osoitteita (vanheneminen alle 5 minuutissa), jotka on sidottu todennettuun ja valtuutettuun käyttäjäistuntoon.</li>
<li><strong>Kattava vientien auditointi:</strong> Käsittele jokainen vientitoiminto datan käyttötilanteena. Kirjaa käyttäjän ID, vuokralaisen ID, kyselyn parametrit, luontiaikaleima ja vastaanottajan IP-osoite muuttumattomaan auditolokiin.</li>
<li><strong>Metatietojen poistaminen:</strong> Poista sisäiset virheenjäljitykseen liittyvät metatiedot, paikallisten palvelinten tiedostopolut, tekijätilit ja kaavojen muokkaushistoria lopullisista asiakirjaominaisuuksista ennen tiedoston tarjoamista ulkoisille asiakkaille.</li>
</ul>
<h2 id="yhteenvetotarkistuslista-kehittäjille">Yhteenvetotarkistuslista kehittäjille</h2>
<table>
<thead>
<tr>
<th style="text-align:left">Uhkaluokka</th>
<th style="text-align:left">Keskeinen haavoittuvuus</th>
<th style="text-align:left">Ensisijainen lieventäminen</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Datan generointi</strong></td>
<td style="text-align:left">Kaava-injektio / CSV-injektio</td>
<td style="text-align:left">Lisää vaarallisten merkkien (<code>=</code>, <code>+</code>, <code>-</code>, <code>@</code>) eteen <code>'</code>; käytä vankkoja sarjoituskirjastoja.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Tiedostojen syöttö</strong></td>
<td style="text-align:left">XXE &amp; purkupommit</td>
<td style="text-align:left">Poista DTD:t ja ulkoiset entiteetit XML-jäsennöistä; pakota arkiston purkurajat.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Tiedostotyypit</strong></td>
<td style="text-align:left">Vahingolliset makrot ja OLE-objektit</td>
<td style="text-align:left">Salli vain <code>.xlsx</code>; poista makrovirrat (<code>vbaProject.bin</code>) latauksen yhteydessä.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Renderöinti</strong></td>
<td style="text-align:left">SSRF headless-muuntimien kautta</td>
<td style="text-align:left">Eristetyt renderöintityöntekijät; estä verkon ulostulo sisäisiin VPC-verkkoihin ja metatietopisteisiin.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Luottamuksellisuus</strong></td>
<td style="text-align:left">Tehoton taulukon suojaus</td>
<td style="text-align:left">Sulje arkaluontoiset kentät kyselytasolla; älä koskaan luota käyttöliittymän solulukituksiin tai piilotettuihin sarakkeisiin.</td>
</tr>
<tr>
<td style="text-align:left"><strong>Jakelu</strong></td>
<td style="text-align:left">Hallitsematon tietojen paljastuminen</td>
<td style="text-align:left">Tarjoa lataukset vanhenevien, esiallekirjoitettujen URL-osoitteiden kautta; tallenna rakenteelliset auditointijäljet kaikista vientitoiminnoista.</td>
</tr>
</tbody>
</table>
<h2 id="usein-kysytyt-kysymykset-faq">Usein kysytyt kysymykset (FAQ)</h2>
<p><strong>K1. Onko tietojen vienti tavalliseen CSV-tiedostoon täysin turvallista koodin suoritukselta?</strong> Ei, koska taulukkolaskentaohjelmat automaattisesti tulkitsevat alussa olevat merkit kuten <code>=</code>, <code>@</code>, <code>+</code>, tai <code>-</code> aktiivisina kaavoina, jotka voivat viedä solun sisällön ulos tai käynnistää paikallisia komentoja.</p>
<p><strong>K2. Voiko Excel-työkirjan salasanaa käyttää suojaamaan arkaluonteisia tietoja luvattomilta kehittäjiltä tai käyttäjiltä?</strong> Ei, natiiviset työkirjan ja työkirjan suojaussalasanat rajoittavat vain käyttöliittymän tasolla tapahtuvaa muokkausta, ja ne voidaan poistaa suoraan taustalla olevista XML-tiedostoista ilman salasanan palautustyökaluja.</p>
<p><strong>K3. Mikä on turvallisin tapa estää XML External Entity (XXE) -hyökkäykset <code>.xlsx</code>-tiedostojen jäsentämisessä?</strong> Määritä XML-jäsennelijäsi nimenomaisesti kieltämään sisäiset DTD:t ja poista ulkoisten skeemojen ja entiteettien ratkaisu käytöstä ennen arkiston sisäisten XML-tiedostojen jäsentämistä.</p>
<p><strong>Q4. Miksi on vaarallista luottaa &quot;piilotettuihin sarakkeisiin&quot; viedyissä taulukkolaskentaohjelmissa arkaluonteisten sisäisten tunnisteiden tai mittareiden piilottamiseksi?</strong> Piilotetut sarakkeet ovat täysin läsnä taustadata-paketissa, ja ne voidaan paljastaa yhdellä klikkauksella taulukkolaskentaohjelman käyttöliittymässä tai lukea suoraan raak tiedoston sisällöstä.</p>
<p><strong>Q5. Kuinka estän Server-Side Request Forgery (SSRF) -hyökkäykset PDF-yhteenvedon tai esikatselukuvien luomisessa käyttäjien taulukkolaskentaohjelmista?</strong> Suorita renderöintimoottorit eristettyinä, verkosta rajoitetuissa konteissa, jotka kieltävät tiukasti ulospäin suuntautuvan verkkoyhteyden yksityisiin aliverkkoihin ja pilven metatietopalveluihin.</p>
<h2 id="katso-myös">Katso myös</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 vuonna 2026: Paras taulukkolomake kehittäjille</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 – Oikean taulukkolomakkeen valinta</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/what-is-excel/">Mikä on Excel? Keskeistä tietoa, jonka sinun tulee tietää</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/excel-file-extensions-xlsx-xlsm-xls-xltx-xltm/">Excel-tiedostomuodot: XLSX, XLSM, XLS, XLTX, XLTM</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/xls-vs-xlsx/">Ero XLS:n ja XLSX:n välillä</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
