{"id":29491,"date":"2021-06-17T12:29:00","date_gmt":"2021-06-17T09:29:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29491"},"modified":"2021-10-17T16:16:23","modified_gmt":"2021-10-17T13:16:23","slug":"como-leer-y-escribir-archivos-de-hoja-de-calculo-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-leer-y-escribir-archivos-de-hoja-de-calculo-en-php\/","title":{"rendered":"C\u00f3mo leer y escribir archivos de hoja de c\u00e1lculo en PHP"},"content":{"rendered":"<p>Mientras trabajamos en aplicaciones web, a menudo nos encontramos con una situaci\u00f3n en la que necesitamos jugar con archivos de hojas de c\u00e1lculo. Es posible que queramos leer datos de hojas de c\u00e1lculo y procesarlos. A veces, tambi\u00e9n es necesario crear y escribir archivos de hojas de c\u00e1lculo.<\/p>\n<p>En este art\u00edculo, estudiamos c\u00f3mo leer y escribir archivos de hojas de c\u00e1lculo en PHP. El c\u00f3digo que vamos a explicar funcionar\u00e1 en 3 tipos de hoja de c\u00e1lculo: CSV, XLSX y ODS.<\/p>\n<h3>Empezando<\/h3>\n<p>Como desarrollador, me gustar\u00eda experimentar con diferentes paquetes que pueden ser \u00fatiles para resolver problemas del mundo real. Recientemente, encontr\u00e9 un paquete llamado <a href=\"https:\/\/github.com\/box\/spout\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">box \/ spout<\/a>. Me gust\u00f3 la forma en que la biblioteca realizaba las tareas. Con esta biblioteca, puede procesar archivos de hojas de c\u00e1lculo con solo unas pocas l\u00edneas de c\u00f3digo.<\/p>\n<p>Esta biblioteca es capaz de procesar archivos de cualquier tama\u00f1o. Es posible que se trate de un archivo de gran tama\u00f1o. Durante el proceso, el archivo grande no deber\u00eda consumir la memoria y crea un problema de rendimiento. La biblioteca Spout resuelve este problema. Solo necesita 3 MB de memoria para procesar cualquier archivo.<\/p>\n<p>Antes de comenzar, su servidor debe cumplir con los siguientes requisitos.<\/p>\n<ul>\n<li>PHP versi\u00f3n 7.2 o superior<\/li>\n<li>Extensi\u00f3n PHP <code>php_zip<\/code>habilitada<\/li>\n<li>Extensi\u00f3n PHP <code>php_xmlreader<\/code>habilitada<\/li>\n<\/ul>\n<p>El usuario puede comprobar si se cumplen todos los requisitos anteriores en su servidor utilizando el <code>phpinfo()<\/code>m\u00e9todo. Cree un archivo PHP temporal y coloque la siguiente declaraci\u00f3n en \u00e9l.<\/p>\n<p>Ahora ejecutar este archivo PHP en el navegador y ver\u00e1 configuraciones de PHP como la versi\u00f3n, extensiones, etc. Debe ver <code>xmlreader<\/code>y <code>zip<\/code>extensiones est\u00e1n habilitadas como se muestra en la siguiente imagen.<\/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=\"C\u00f3mo leer y escribir archivos de hoja de c\u00e1lculo en PHP\" ><\/a><\/p>\n<p>Una vez que cumpla con los requisitos, instale el <code>box\/spout<\/code>paquete a trav\u00e9s del siguiente comando.<\/p>\n<pre><code>composer require box\/spout<\/code><\/pre>\n<h3>Leer y escribir archivos de hoja de c\u00e1lculo en PHP<\/h3>\n<p>El paquete Spout le permite interactuar con archivos XLSX, CSV y ODS. Como ejemplo, estoy escribiendo un c\u00f3digo para archivos XLSX.<\/p>\n<p>Cree un archivo XLSX de muestra <code>users.xlsx<\/code>en el directorio ra\u00edz y agregue algunas entradas ficticias. En mi caso, el archivo tiene las siguientes entradas.<\/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=\"C\u00f3mo leer y escribir archivos de hoja de c\u00e1lculo en PHP\" ><\/a><\/p>\n<p>A continuaci\u00f3n, escribir\u00e9 un c\u00f3digo en el <code>reader.php<\/code>archivo que leer\u00e1 <code>users.xlsx<\/code>e imprimir\u00e1 los datos que contiene.<\/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>Es as\u00ed de simple. Adelante, pru\u00e9balo.<\/p>\n<p>Por otro lado, podemos crear f\u00e1cilmente un archivo XLSX y escribir datos en \u00e9l. Creemos un archivo <code>writer.php<\/code>y agreguemos el c\u00f3digo a continuaci\u00f3n.<\/p>\n<p><strong>escritor.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>El c\u00f3digo anterior crea un <code>new-users.xlsx<\/code>archivo en su directorio ra\u00edz. Si abre este archivo, ver\u00e1 que se insertan algunas filas (utilizadas en el c\u00f3digo).<\/p>\n<p>En el caso de archivos CSV y ODS, debe crear un <code>$writer<\/code>objeto de la siguiente manera.<\/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>Espero que comprenda c\u00f3mo leer y escribir archivos de hojas de c\u00e1lculo en PHP. Me gustar\u00eda escuchar sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-leer-archivos-csv-y-excel-en-php-usando-phpspreadsheet\/\" title=\"C\u00f3mo leer archivos CSV y Excel en PHP usando PhpSpreadsheet\">C\u00f3mo leer archivos CSV y Excel en PHP usando PhpSpreadsheet<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-exportar-datos-de-bases-de-datos-mysql-a-excel-usando-php\/\" title=\"C\u00f3mo exportar datos de bases de datos MySQL a Excel usando PHP\">C\u00f3mo exportar datos de bases de datos MySQL a Excel usando PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-convertir-html-a-pdf-en-php\/\" title=\"C\u00f3mo convertir HTML a PDF en PHP\">C\u00f3mo convertir HTML a PDF en PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQuieres saber c\u00f3mo leer y escribir archivos de hojas de c\u00e1lculo en PHP? En este art\u00edculo, estudiamos c\u00f3mo interactuar con archivos de hoja de c\u00e1lculo utilizando<\/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":[271],"tags":[849],"class_list":["post-29491","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=29491"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29491\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/20183"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=29491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=29491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=29491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}