{"id":29653,"date":"2021-06-17T11:45:00","date_gmt":"2021-06-17T08:45:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29653"},"modified":"2021-10-17T04:14:32","modified_gmt":"2021-10-17T01:14:32","slug":"hur-man-laser-och-skriver-kalkylarkfiler-i-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-laser-och-skriver-kalkylarkfiler-i-php\/","title":{"rendered":"Hur man l\u00e4ser och skriver kalkylarkfiler i PHP"},"content":{"rendered":"<p>N\u00e4r vi arbetar med webbapplikationer st\u00f6ter vi ofta p\u00e5 en situation d\u00e4r vi beh\u00f6ver spela med kalkylarkfiler. Vi kanske vill l\u00e4sa data fr\u00e5n kalkylark och bearbeta den. Ibland \u00e4r det ocks\u00e5 n\u00f6dv\u00e4ndigt att skapa och skriva kalkylarkfiler.<\/p>\n<p>I den h\u00e4r artikeln studerar vi hur man l\u00e4ser och skriver kalkylarkfiler i PHP. Koden vi ska f\u00f6rklara fungerar p\u00e5 tre typer av kalkylark &#8211; CSV, XLSX och ODS.<\/p>\n<h3>Komma ig\u00e5ng<\/h3>\n<p>Som utvecklare vill jag experimentera med olika paket som kan vara till hj\u00e4lp f\u00f6r att l\u00f6sa verkliga problem. Nyligen kom jag \u00f6ver ett paket som heter <a href=\"https:\/\/github.com\/box\/spout\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">box \/ pip<\/a>. Jag gillade hur biblioteket utf\u00f6rde uppgifterna. Med detta bibliotek kan du bearbeta kalkylarkfiler med bara n\u00e5gra rader kod.<\/p>\n<p>Detta bibliotek kan bearbeta filer i alla storlekar. Det kan vara m\u00f6jligt att du har att g\u00f6ra med en stor fil. Under processen b\u00f6r den stora filen inte konsumera minnet och skapa ett prestandaproblem. Tutbiblioteket l\u00f6ser detta problem. Det beh\u00f6ver bara 3 MB minne f\u00f6r att bearbeta n\u00e5gon fil.<\/p>\n<p>Innan du b\u00f6rjar b\u00f6r din server uppfylla kraven nedan.<\/p>\n<ul>\n<li>PHP version 7.2 eller senare<\/li>\n<li>PHP-till\u00e4gg <code>php_zip<\/code>aktiverat<\/li>\n<li>PHP-till\u00e4gg <code>php_xmlreader<\/code>aktiverat<\/li>\n<\/ul>\n<p>Anv\u00e4ndaren kan kontrollera om alla ovanst\u00e5ende krav \u00e4r uppfyllda p\u00e5 din server med <code>phpinfo()<\/code>metoden. Skapa en tillf\u00e4llig PHP-fil och placera nedanst\u00e5ende uttalande i den.<\/p>\n<p>K\u00f6r nu den h\u00e4r PHP-filen i webbl\u00e4saren s\u00e5 ser du PHP-konfigurationer som version, till\u00e4gg etc. Du b\u00f6r se <code>xmlreader<\/code>och <code>zip<\/code>till\u00e4gg \u00e4r aktiverade som visas i sk\u00e4rmdumpen nedan.<\/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=\"Hur man l\u00e4ser och skriver kalkylarkfiler i PHP\" ><\/a><\/p>\n<p>N\u00e4r du uppfyller kraven installerar du <code>box\/spout<\/code>paketet via kommandot nedan.<\/p>\n<pre><code>composer require box\/spout<\/code><\/pre>\n<h3>L\u00e4s och skriv kalkylarkfiler i PHP<\/h3>\n<p>Spout-paketet l\u00e5ter dig interagera med XLSX-, CSV- och ODS-filer. Som ett exempel skriver jag en kod f\u00f6r XLSX-filer.<\/p>\n<p>Skapa ett exempel p\u00e5 en XLSX-fil <code>users.xlsx<\/code>i rotkatalogen och l\u00e4gg till n\u00e5gra dummyposter till den. I mitt fall har filen nedanst\u00e5ende poster.<\/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=\"Hur man l\u00e4ser och skriver kalkylarkfiler i PHP\" ><\/a><\/p>\n<p>D\u00e4refter skriver jag en kod i <code>reader.php<\/code>filen som l\u00e4ser <code>users.xlsx<\/code>och skriver ut data i den.<\/p>\n<p><strong>reader.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>Det \u00e4r s\u00e5 enkelt. Forts\u00e4tt och prova det.<\/p>\n<p>\u00c5 andra sidan kan vi enkelt skapa en XLSX-fil och skriva data i den. L\u00e5t oss skapa en fil <code>writer.php<\/code>och l\u00e4gga till koden nedan i den.<\/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>Ovanst\u00e5ende kod skapar en <code>new-users.xlsx<\/code>fil i din rotkatalog. Om du \u00f6ppnar den h\u00e4r filen ser du n\u00e5gra rader (anv\u00e4nds i kod) infogas i den.<\/p>\n<p>N\u00e4r det g\u00e4ller CSV- och ODS-filer m\u00e5ste du skapa ett <code>$writer<\/code>objekt enligt f\u00f6ljande.<\/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>Jag hoppas att du f\u00f6rst\u00e5r hur man l\u00e4ser och skriver kalkylarkfiler i PHP. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-laser-csv-och-excel-filer-i-php-med-hjalp-av-phpspreadsheet\/\" title=\"Hur man l\u00e4ser CSV- och Excel-filer i PHP med hj\u00e4lp av PhpSpreadsheet\">Hur man l\u00e4ser CSV- och Excel-filer i PHP med hj\u00e4lp av PhpSpreadsheet<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-exporterar-mysql-databasdata-till-excel-med-php\/\" title=\"Hur man exporterar MySQL-databasdata till Excel med PHP\">Hur man exporterar MySQL-databasdata till Excel med PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-konverterar-html-till-pdf-i-php\/\" title=\"Hur man konverterar HTML till PDF i PHP\">Hur man konverterar HTML till PDF i PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vill du veta hur man l\u00e4ser och skriver kalkylarkfiler i PHP? I den h\u00e4r artikeln studerar vi hur man interagerar med kalkylarkfiler med hj\u00e4lp av<\/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":[279],"tags":[850],"class_list":["post-29653","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=29653"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29653\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/20183"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}