<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://php.apsique.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Php y otras yerbas - Excel y PHP - Comentarios</title>
 <link>http://php.apsique.com/contenido/excel_y_php</link>
 <description>Comentarios para &quot;Excel y PHP&quot;</description>
 <language>es</language>
<item>
 <title>Bueno probé con el Excel</title>
 <link>http://php.apsique.com/contenido/excel_y_php#comment-87165</link>
 <description>&lt;p&gt;Bueno probé con el Excel nativo y me va muy bien. Bueno luego de manipular algunas líneas referentes a los formatos. Ya que como está solo considera algun os de estos formatos (definidos en $dateFormat y $numberFormat), el caso era que no es lo mismo para todas las personas ni aplicaciones. Comprobé que el formato se registraba en otro lugar (con elementos como GENERAL, @, HH:MM:SS, MM/DD/YYYY, y cosas por el estilo), con una búsqueda probabilistica social defini reglas de transformación de tipos (si el campo es date con el rawValue &amp;lt;= 1 probablemente sea una hora). Da lo mismo como se vea en el archivo &lt;em&gt;xls&lt;/em&gt; ya que realmente se almacena con un punto flotante.&lt;/p&gt;
&lt;p&gt;Ahora como supondrán con las líneas siguientes el cálculo es algo simple. Demasiado. El problema se origina en el formato de almacenamiento de una fecha. Un día es equivalente a una unidad, por lo que un valor &lt;em&gt;0,5&lt;/em&gt; en el raw de una determinada casilla se ve en el xls como 12:00:00 (medio día). El problema es que debido a la manipulación de decimales para calcular horas, minutos y segundos estos se calculan con multiplicaciones por 24, 60 y múltiplos. Con lo cual se pierden algunos decimales &quot;poco significativos&quot; para PHP. Haciendo que horas como las 17:00 hrs se vea como 16:59:59. Traté de hacer que me añadiera ese segundo (lo que acarrea el problema de si en realidad el valor es 16:59:59) con los IFs anidados, pero nada. Tambien intenté quitar el floor, pero nada.&lt;/p&gt;
&lt;p&gt;¿alguien sabe cómo manipular esos decimales o cómo rescatarles más precisamente desde el xls?&lt;/p&gt;
&lt;p&gt;PD: También he intentado con las funciones BC Math.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
function createDate($numValue)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$rawD = $parteDecimal;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$hours = floor($parteDecimal * 24);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$mins = floor($parteDecimal * 24 * 60) - $hours * 60;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$secs = floor($parteDecimal * SPREADSHEET_EXCEL_READER_MSINADAY) - $hours * 60 * 60 - $mins * 60;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if($secs == 59) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$mins++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$secs = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if($mins == 60) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$hours++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$mins = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$stringD = date (AIRVIRO_HOUR_FORMAT , mktime($hours, $mins, $secs));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/p&gt;
&lt;p&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;PD: AIRVIRO_HOUR_FORMAT es &lt;em&gt;&#039;Hi&#039;&lt;/em&gt;, si el valor de raw es 0,75 entonces imprime 1800. ¡Entiende!&lt;/p&gt;
&lt;p&gt;Gracias de antemano.&lt;/p&gt;
&lt;p&gt;PD: También les señalo que habia problemas con archivos generados con Gnumeric. Al parecer no aplica bien el formato correspondiente al número de columnas o filas por hoja. Me dio bastantes problemas, ya con OpenOffice o Microsoft Office funciona como debe. Una pena por este ya que es mucho más liviano que el OpenOffice.&lt;/p&gt;
</description>
 <pubDate>Wed, 05 Nov 2008 07:46:38 -0800</pubDate>
 <dc:creator>Nelson Hereveri</dc:creator>
 <guid isPermaLink="false">comment 87165 at http://php.apsique.com</guid>
</item>
<item>
 <title>Excel y PHP</title>
 <link>http://php.apsique.com/contenido/excel_y_php</link>
 <description>&lt;p&gt;Como utilizar Excel con PHP&lt;/p&gt;
</description>
 <comments>http://php.apsique.com/contenido/excel_y_php#comments</comments>
 <category domain="http://php.apsique.com/lenguajes/php">PHP</category>
 <category domain="http://php.apsique.com/categoria/busquedas_comunes/excel">excel</category>
 <pubDate>Fri, 25 Jul 2008 08:20:34 -0700</pubDate>
 <dc:creator>clbustos</dc:creator>
 <guid isPermaLink="false">1481 at http://php.apsique.com</guid>
</item>
</channel>
</rss>
