{"id":25929,"date":"2021-06-17T12:06:00","date_gmt":"2021-06-17T09:06:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25929"},"modified":"2021-10-17T20:16:05","modified_gmt":"2021-10-17T17:16:05","slug":"laskentataulukotiedostojen-lukeminen-ja-kirjoittaminen-php-ssa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/laskentataulukotiedostojen-lukeminen-ja-kirjoittaminen-php-ssa\/","title":{"rendered":"Laskentataulukotiedostojen lukeminen ja kirjoittaminen PHP: ss\u00e4"},"content":{"rendered":"<p>Verkkosovellusten parissa ty\u00f6skentelemme usein tilanteessa, jossa meid\u00e4n on pelattava taulukkolaskentatiedostoilla. Saatamme haluta lukea tietoja taulukoista ja k\u00e4sitell\u00e4 niit\u00e4. Joskus vaaditaan my\u00f6s laskentataulukoiden luominen ja kirjoittaminen.<\/p>\n<p>T\u00e4ss\u00e4 artikkelissa tutkitaan laskentataulukoiden lukemista ja kirjoittamista PHP: ss\u00e4. Koodi, jonka selit\u00e4mme, toimii 3 tyyppisess\u00e4 laskentataulukossa &#8211; CSV, XLSX ja ODS.<\/p>\n<h3>P\u00e4\u00e4st\u00e4 alkuun<\/h3>\n<p>Kehitt\u00e4j\u00e4n\u00e4 haluaisin kokeilla erilaisia \u200b\u200bpaketteja, joista voi olla apua reaalimaailman ongelmien ratkaisemisessa. Viime aikoina t\u00f6rm\u00e4sin pakettiin nimelt\u00e4 <a href=\"https:\/\/github.com\/box\/spout\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">laatikko \/ nokka<\/a>. Pidin siit\u00e4, miten kirjasto suoritti teht\u00e4v\u00e4t. T\u00e4m\u00e4n kirjaston avulla voit k\u00e4sitell\u00e4 laskentataulukotiedostoja vain muutamalla rivill\u00e4 koodia.<\/p>\n<p>T\u00e4m\u00e4 kirjasto pystyy k\u00e4sittelem\u00e4\u00e4n kaiken kokoisia tiedostoja. Saattaa olla mahdollista, ett\u00e4 k\u00e4sittelet suurta tiedostoa. Prosessin aikana suuri tiedosto ei saisi kuluttaa muistia ja luo suorituskykyongelman. Juoksukirjasto ratkaisee t\u00e4m\u00e4n ongelman. Tiedostojen k\u00e4sittelyyn tarvitaan vain 3 Mt muistia.<\/p>\n<p>Ennen aloittamista palvelimesi tulee t\u00e4ytt\u00e4\u00e4 alla olevat vaatimukset.<\/p>\n<ul>\n<li>PHP-versio 7.2 tai uudempi<\/li>\n<li>PHP-laajennus <code>php_zip<\/code>k\u00e4yt\u00f6ss\u00e4<\/li>\n<li>PHP-laajennus <code>php_xmlreader<\/code>k\u00e4yt\u00f6ss\u00e4<\/li>\n<\/ul>\n<p>K\u00e4ytt\u00e4j\u00e4 voi tarkistaa, t\u00e4yttyv\u00e4tk\u00f6 kaikki yll\u00e4 olevat vaatimukset palvelimellasi t\u00e4m\u00e4n <code>phpinfo()<\/code>menetelm\u00e4n avulla. Luo v\u00e4liaikainen PHP-tiedosto ja aseta alla oleva k\u00e4sky siihen.<\/p>\n<p>Suorita nyt t\u00e4m\u00e4 PHP-tiedosto selaimessa ja n\u00e4et PHP-kokoonpanot, kuten version, laajennukset jne. Sinun pit\u00e4isi n\u00e4hd\u00e4 <code>xmlreader<\/code>ja <code>zip<\/code>laajennukset olla k\u00e4yt\u00f6ss\u00e4 alla olevan kuvakaappauksen mukaisesti.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20182-6081c957ae160.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20182-6081c957ae160.png\" alt=\"Laskentataulukotiedostojen lukeminen ja kirjoittaminen PHP: ss\u00e4\" ><\/a><\/p>\n<p>Kun olet t\u00e4ytt\u00e4nyt vaatimukset, asenna <code>box\/spout<\/code>paketti alla olevan komennon avulla.<\/p>\n<pre><code>composer require box\/spout<\/code><\/pre>\n<h3>Lukea ja kirjoittaa laskentataulukotiedostoja PHP: ss\u00e4<\/h3>\n<p>Spout-paketin avulla voit olla vuorovaikutuksessa XLSX-, CSV- ja ODS-tiedostojen kanssa. Esimerkiksi kirjoitan koodin XLSX-tiedostoille.<\/p>\n<p>Luo XLSX-esimerkkitiedosto <code>users.xlsx<\/code>juurihakemistoon ja lis\u00e4\u00e4 siihen joitain nuken merkint\u00f6j\u00e4. Minun tapauksessani tiedostossa on alla olevia merkint\u00f6j\u00e4.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20182-6081c95872223.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20182-6081c95872223.png\" alt=\"Laskentataulukotiedostojen lukeminen ja kirjoittaminen PHP: ss\u00e4\" ><\/a><\/p>\n<p>Seuraavaksi kirjoitan koodin <code>reader.php<\/code>tiedostoon, joka lukee <code>users.xlsx<\/code>ja tulostaa siin\u00e4 olevat tiedot.<\/p>\n<p><strong>lukija.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nuse BoxSpoutReaderCommonCreatorReaderEntityFactory;\n\u00a0\n$filePath = getcwd().'\/users.xlsx';\n\u00a0\n$reader = ReaderEntityFactory::createReaderFromFile($filePath);\n\u00a0\n$reader-&gt;open($filePath);\n\u00a0\nforeach ($reader-&gt;getSheetIterator() as $sheet) {\n\u00a0\u00a0\u00a0\u00a0foreach ($sheet-&gt;getRowIterator() as $row) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$cells = $row-&gt;getCells();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foreach ($cells as $cell) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $cell-&gt;getValue();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\n$reader-&gt;close();<\/code><\/pre>\n<p>Se on niin yksinkertaista. Mene eteenp\u00e4in ja kokeile sit\u00e4.<\/p>\n<p>Toisaalta voimme helposti luoda XLSX-tiedoston ja kirjoittaa siihen tietoja. Luodaan tiedosto <code>writer.php<\/code>ja lis\u00e4t\u00e4\u00e4n koodi sen alle.<\/p>\n<p><strong>writer.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nuse BoxSpoutWriterCommonCreatorWriterEntityFactory;\nuse BoxSpoutCommonEntityRow;\n\u00a0\n$filePath = getcwd().'\/new-users.xlsx';\n\u00a0\n$writer = WriterEntityFactory::createXLSXWriter();\n\u00a0\n$writer-&gt;openToFile($filePath);\n\u00a0\n\/\/ Here is data for XLSX file\n$data = [\n\u00a0\u00a0\u00a0\u00a0['Name', 'Email'],\n\u00a0\u00a0\u00a0\u00a0['Steve', 'steve@test.com'],\n\u00a0\u00a0\u00a0\u00a0['David', 'david@test.com'],\n];\n\u00a0\nforeach ($data as $d) {\n\u00a0\u00a0\u00a0\u00a0$cells = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0WriterEntityFactory::createCell($d[0]),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0WriterEntityFactory::createCell($d[1]),\n\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$singleRow = WriterEntityFactory::createRow($cells);\n\u00a0\u00a0\u00a0\u00a0$writer-&gt;addRow($singleRow);\n}\n\u00a0\n$writer-&gt;close();<\/code><\/pre>\n<p>Yll\u00e4 oleva koodi luo <code>new-users.xlsx<\/code>tiedoston juurihakemistoon. Jos avaat t\u00e4m\u00e4n tiedoston, n\u00e4et siihen muutaman rivin (k\u00e4ytet\u00e4\u00e4n koodissa).<\/p>\n<p>CSV- ja ODS-tiedostojen tapauksessa sinun on luotava <code>$writer<\/code>objekti seuraavasti.<\/p>\n<pre><code>$filePath = getcwd().'\/new-users.ods';\n$writer = WriterEntityFactory::createODSWriter();\n\u00a0\n$filePath = getcwd().'\/new-users.csv';\n$writer = WriterEntityFactory::createCSVWriter();<\/code><\/pre>\n<p>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t kuinka lukea ja kirjoittaa laskentataulukoita PHP: ss\u00e4. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-lukea-csv-ja-excel-tiedostoja-php-ssa-phpspreadsheetin-avulla\/\" title=\"Kuinka lukea CSV- ja Excel-tiedostoja PHP: ss\u00e4 PhpSpreadsheetin avulla\">Kuinka lukea CSV- ja Excel-tiedostoja PHP: ss\u00e4 PhpSpreadsheetin avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-vieda-mysql-tietokantatiedot-exceliin-php-n-avulla\/\" title=\"Kuinka vied\u00e4 MySQL-tietokantatiedot Exceliin PHP: n avulla\">Kuinka vied\u00e4 MySQL-tietokantatiedot Exceliin PHP: n avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-muuntaa-html-tiedosto-pdf-muotoon-php-ssa\/\" title=\"Kuinka muuntaa HTML-tiedosto PDF-muotoon PHP: ss\u00e4\">Kuinka muuntaa HTML-tiedosto PDF-muotoon PHP: ss\u00e4<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Haluatko tiet\u00e4\u00e4 kuinka lukea ja kirjoittaa laskentataulukoita PHP: ss\u00e4? T\u00e4ss\u00e4 artikkelissa tutkitaan, miten laskentataulukotiedostoja voidaan k\u00e4ytt\u00e4\u00e4<\/p>\n","protected":false},"author":1,"featured_media":20183,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[275],"tags":[843],"class_list":["post-25929","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=25929"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25929\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20183"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}