2012-01-24 27 views
5

Hola, quiero analizar un archivo de Excel utilizando zend framework. Fui a Zend Developer Zone y encontré una solución para descargar phpexcelreader. Descargué el código, establecí un proyecto en localhost y ejecuté el código. Cuando treid para leer un archivo .xlsx se genera un errorEl nombre de archivo feed1.xls no se puede leer en php

The filename feed1.xlsx is not readable 

me guardó el archivo en formato .xls y ejecutar el código analiza el archivo correctamente. Ahora quiero implementar esto en mi proyecto desarrollado en Zend framework. Creé un modelo, y en mi proyecto y require_once ed el excelreader en la parte superior de mi proyecto de esta manera.

require_once 'Excelreader/Excel/reader.php'; 
class ExcelreaderModel extends Zend_Db_Table 
{ 
function readFile() 
{ 
    $data = new Spreadsheet_Excel_Reader(); 

    // Set output Encoding. 
    $data->setOutputEncoding('CP1251'); 

    //$data->read('Excelreader/Excel/feed1.xls'); 
    $data->read('feed1.xls'); 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
} 
} 

Llamé a esta función de modelo en mi controlador. Pero está generando el mismo error que encontré en el servidor local usando los archivos .xlsx. Pero estoy leyendo el archivo .xls que es analizado por el código que se ejecuta en el proyecto simple en localhost. También estoy ejecutando Zend Framework en local.

¿Qué hay de malo en mi código? ¿O hay alguna forma de hacer la misma tarea?

+0

Si está utilizando Spreadsheet_Excel_Reader, entonces la etiqueta PHPExcel no es apropiado ... PHPExcel es una biblioteca específica que no es la biblioteca Spreadsheet_Excel_Reader –

+0

Tampoco se Spreadsheet_Excel_Reader leer archivos .xlsx ... ¿Realmente ahorra su archivo .xlsx original como Excel95.xls, o simplemente cambiarle el nombre? –

+0

@MarkBaker Estoy guardando el archivo original como formato .xls. hay alguna otra solucion? –

Respuesta

2

Lo mejor que puedo decir, el error que está viendo es establecido por esta línea de código:

if(!is_readable($sFileName)) { 
    $this->error = 1; 
    return false; 
} 

Por una razón u otra, no puede leer el archivo que se está dando, ya sea porque hay una permisos/problema del usuario, o la ruta al archivo es incorrecta.

Si se encuentra en un servidor * nix, debe asegurarse de que el usuario que ejecuta el servidor web tenga permiso para leer el archivo de Excel. El servidor web probablemente se está ejecutando como un usuario diferente de quién es el propietario del archivo. También puede intentar establecer los permisos a 666.

Si sólo ins't encontrar el archivo, proporcionando una ruta completa puede ayudar, (por ejemplo $data->read('/usr/local/apache2/htdocs/Excelreader/feed1.xls');

3

Creo que el problema está en el tipo de codificación de archivos en lugar de .xlxs el establecimiento de permisos de archivo. Si cambia el permiso no va a funcionar para usted. el problema es que en OLE_IDENTIFIER (��ࡱ�).

Así que los datos del archivo debe comenzar con ��ࡱ� datos. Incluso Busco solución adecuada para esto. se puede alguien ayudar? ?

+0

Si tiene una pregunta separada (evento si es similar), cree una pregunta por separado. –

+0

ha encontrado una solución para este problema. Teniendo el mismo problema –

1

El error podría sin duda será más descriptivo. He añadido en una envoltura interior función de lectura() así:

if (file_exists($sFileName)) 
{ 
    ... 
}else{ 
    die('The file ' . $sFileName . ' was not found'); 
} 

y, efectivamente, estaba buscando en el directorio equivocado todo el tiempo !!

1

mb_internal_encoding("8bit"); en la cabeza del archivo php hizo el truco para mí.

0

Por favor, convertir el archivo XLSX a XLS y funcionará :)

se está trabajando para mí, puede probarlo.

Cuestiones relacionadas