2011-12-21 54 views
8

Tengo problemas con las fechas y la hora. Quiero que se lean tal como aparecen en el libro de trabajo de Excel.PHPExcel: Lee todos los valores (fecha, hora, números) como cadenas

Por lo tanto, creo que si consigo todas las celdas de la hoja utilizando toArray(), entonces yo debería simplemente hacer algo (algunos de conversión de formato) que trazará un mapa de todas las células en forma de cadenas, fechas, horarios, etc.

O puede haber allí una función como carga, que carga todos los datos en el libro de trabajo como una cadena sin formatear u otras cosas complejas.

Respuesta

11

toArray() es compatible con los siguientes argumentos:

/** 
* @param mixed $nullValue   Value returned in the array entry if a cell doesn't 
*          exist 
* @param boolean $calculateFormulas Should formulas be calculated? 
* @param boolean $formatData   Should formatting be applied to cell values? 
* @param boolean $returnCellRef  False - Return a simple array of rows and 
*          columns indexed by number counting from zero 
*          True - Return rows and columns indexed by their 
*          actual row and column IDs 
*/ 

por lo

toArray(NULL,TRUE,TRUE); 

devolverá todos los valores de las celdas en la hoja de trabajo (calculado y formateado) exactamente como aparecen en Excel sí mismo.

Por lo tanto, las fechas se devolverán como (por ejemplo) 21-Dic-2011 a las 07:30 en lugar de a 47239.318 (según la máscara de formato de la celda). Otras celdas numéricas podrían devolverse como 21,357.00 (dependiendo del enmascaramiento de formato para esa celda) por lo que es una espada de dos filos.

+4

Gracias por responder esta pregunta. Funcionó bien Pero creo que la documentación de toArray(), rangeToArray() (y para todos los demás, donde corresponda) debe incluir una advertencia para no usar '$ objReader-> setReadDataOnly (true) '. Me tomó un tiempo descubrir por qué tu sugerencia no funciona. Tengo que sumergirme en el código PHPExel para resolver esto. – WebSoft

+0

Esta condición acerca de setReadDataOnly (true) se aplica a través de PHPExcel, no solo a métodos como toArray() ... agregar una advertencia donde sea que se aplique agregará varios cientos de líneas a la documentación. Sin embargo, el proceso de actualización de la documentación está en curso. –

+0

Gracias por su respuesta. Otra pregunta: ¿Es posible importar archivos de texto delineados por tabulaciones en objetos PHPEXCEL? – WebSoft

Cuestiones relacionadas