{"id":26325,"date":"2021-06-17T11:43:00","date_gmt":"2021-06-17T08:43:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26325"},"modified":"2021-10-17T18:16:15","modified_gmt":"2021-10-17T15:16:15","slug":"kuidas-arvutustabeli-faile-lugeda-ja-kirjutada-php-s","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/kuidas-arvutustabeli-faile-lugeda-ja-kirjutada-php-s\/","title":{"rendered":"Kuidas arvutustabeli faile lugeda ja kirjutada PHP-s"},"content":{"rendered":"<p>Veebirakenduste kallal t\u00f6\u00f6tades satume sageli olukorda, kus peame m\u00e4ngima arvutustabeli failidega. V\u00f5ime soovida lugeda arvutustabelite andmeid ja neid t\u00f6\u00f6delda. M\u00f5nikord on vajalik ka arvutustabelifailide loomine ja kirjutamine.<\/p>\n<p>Selles artiklis uurime, kuidas arvutustabelifaile lugeda ja kirjutada PHP-s. Kood, mida selgitame, t\u00f6\u00f6tab kolme t\u00fc\u00fcpi arvutustabelites &#8211; CSV, XLSX ja ODS.<\/p>\n<h3>Alustamine<\/h3>\n<p>Arendajana tahaksin katsetada erinevaid pakette, mis v\u00f5ivad olla abiks reaalsete probleemide lahendamisel. Hiljuti puutusin kokku pakiga, mille nimi oli <a href=\"https:\/\/github.com\/box\/spout\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kast \/ tila<\/a>. Mulle meeldis, kuidas raamatukogu \u00fclesandeid t\u00e4itis. Selle teegi abil saate t\u00f6\u00f6delda arvutustabelifaile vaid m\u00f5ne koodireaga.<\/p>\n<p>See teek on v\u00f5imeline t\u00f6\u00f6tlema mis tahes suurusega faile. V\u00f5ib juhtuda, et tegemist on suure failiga. Protsessi ajal ei tohiks suur fail m\u00e4lu tarbida ja tekitab j\u00f5udluse probleemi. Tila raamatukogu lahendab selle probleemi. Mis tahes faili t\u00f6\u00f6tlemiseks vajab see ainult 3 MB m\u00e4lu.<\/p>\n<p>Enne alustamist peaks teie server vastama allpool toodud n\u00f5uetele.<\/p>\n<ul>\n<li>PHP versioon 7.2 v\u00f5i uuem<\/li>\n<li>PHP laiendus on <code>php_zip<\/code>lubatud<\/li>\n<li>PHP laiendus on <code>php_xmlreader<\/code>lubatud<\/li>\n<\/ul>\n<p>Kasutaja saab <code>phpinfo()<\/code>meetodi abil kontrollida, kas k\u00f5ik \u00fclaltoodud n\u00f5uded on teie serveris t\u00e4idetud. Looge ajutine PHP-fail ja asetage sellesse j\u00e4rgmine allkiri.<\/p>\n<p>N\u00fc\u00fcd k\u00e4ivitage see PHP-fail brauseris ja n\u00e4ete PHP-konfiguratsioone, nagu versioon, laiendused jne. Peaksite n\u00e4gema <code>xmlreader<\/code>ja <code>zip<\/code>laiendused on lubatud, nagu on n\u00e4idatud alloleval ekraanipildil.<\/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=\"Kuidas arvutustabeli faile lugeda ja kirjutada PHP-s\" ><\/a><\/p>\n<p>Kui olete n\u00f5uetele vastanud, installige <code>box\/spout<\/code>pakett alloleva k\u00e4su kaudu.<\/p>\n<pre><code>composer require box\/spout<\/code><\/pre>\n<h3>Arvutustabeli failide lugemine ja kirjutamine PHP-s<\/h3>\n<p>Spout-pakett v\u00f5imaldab teil suhelda XLSX-, CSV- ja ODS-failidega. N\u00e4itena kirjutan koodi XLSX-failidele.<\/p>\n<p>Looge <code>users.xlsx<\/code>juurkataloogis XLSX-faili n\u00e4idis ja lisage sellele m\u00f5ned n\u00e4iv kirjed. Minu puhul on fail allpool kirjeid.<\/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=\"Kuidas arvutustabeli faile lugeda ja kirjutada PHP-s\" ><\/a><\/p>\n<p>J\u00e4rgmisena kirjutan <code>reader.php<\/code>faili koodi, mis loeb <code>users.xlsx<\/code>ja prindib selles olevad andmed.<\/p>\n<p><strong>lugeja.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>Nii lihtne see ongi. Edasi ja proovige seda.<\/p>\n<p>Teiselt poolt saame h\u00f5lpsalt luua XLSX-faili ja sinna andmed kirjutada. Loome faili <code>writer.php<\/code>ja lisame sellesse koodi allpool.<\/p>\n<p><strong>kirjanik.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>\u00dclaltoodud kood loob <code>new-users.xlsx<\/code>faili teie juurkataloogi. Selle faili avamisel n\u00e4ete, et sellesse on sisestatud paar rida (kasutatakse koodis).<\/p>\n<p>CSV- ja ODS-failide puhul peate looma <code>$writer<\/code>objekti j\u00e4rgmiselt.<\/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>Loodan, et saate aru, kuidas arvutustabelifaile PHP-s lugeda ja kirjutada. Tahaksin kuulda teie m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-lugeda-csv-ja-exceli-faile-php-s-kasutades-phpspreadsheet\/\" title=\"Kuidas lugeda CSV- ja Exceli faile PHP-s, kasutades PhpSpreadsheet\">Kuidas lugeda CSV- ja Exceli faile PHP-s, kasutades PhpSpreadsheet<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-eksportida-mysql-i-andmebaasiandmeid-excelisse-php-abil\/\" title=\"Kuidas eksportida MySQL-i andmebaasiandmeid Excelisse PHP abil\">Kuidas eksportida MySQL-i andmebaasiandmeid Excelisse PHP abil<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-teisendada-html-i-pdf-i-php-s\/\" title=\"Kuidas teisendada HTML-i PDF-i PHP-s\">Kuidas teisendada HTML-i PDF-i PHP-s<\/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>Kas soovite teada, kuidas arvutustabelifaile lugeda ja kirjutada PHP-s? Selles artiklis uurime, kuidas arvutustabeli failidega suhelda<\/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":[274],"tags":[842],"class_list":["post-26325","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=26325"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26325\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20183"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}