Имя файла feed1.xls не читается в php

Привет я хочу проанализировать файл excel с помощью Zend framework. Я пошел в Zend Developer Zone и нашел решение скачать phpexcelreader. Я загрузил код, установил проект на localhost и запустил код. Когда я treid читать .xlsx файл генерирует ошибку

The filename feed1.xlsx is not readable

Я сохранил файл в и запустить код успешно парсится файл. Теперь я хочу реализовать это в своем проекте, разработанном в Zend framework. Я создал модель, а в моем проекте и require_onceЭд excelreader в верхней части моего проекта, как это.

 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>';
}
}

Я вызвал эту функцию модели в моем контроллере. Но он генерирует ту же ошибку, которую я нашел на localhost с помощью .xlsx файлы. Но я читаю!--3--> файл, который анализируется кодом, запущенным в простом проекте на localhost.Я также запускаю Zend framework в local.

что не так в моем коде? Или есть какой-то способ выполнить ту же задачу.?

5 ответов


насколько я могу судить, ошибка, которую вы видите, устанавливается этой строкой кода:

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

по той или иной причине он не может прочитать файл, который вы даете, либо потому, что есть проблема с разрешениями/пользователем, либо путь к файлу неправильный.

Если вы находитесь на сервере *nix, вы должны убедиться, что пользователь, запускающий веб-сервер, имеет разрешение на чтение файла excel. Веб-сервер, вероятно, работает как другой пользователь, чем владелец файла. Вы также можете попробовать установка разрешений на 666.

если он просто не находит файл, предоставление полного пути может помочь (например,$data->read('/usr/local/apache2/htdocs/Excelreader/feed1.xls');


Я думаю, что проблема в кодировке типа .xlxs файл, а не в настройке разрешения файла. Если вы измените разрешение, оно не будет работать для вас. Проблема в OLE_IDENTIFIER (���).

таким образом, ваши данные файла должны начинаться с ��� данные. Даже я ищу правильное решение для этого. Кто-нибудь может помочь ??


ошибка, безусловно, может быть более описательной. Я добавил в оболочку внутри функции read () вот так:

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

и, конечно же, я все время искал в неправильном каталоге!!


mb_internal_encoding("8bit"); в голове php-файла сделал трюк для меня.


конвертируйте файл xlsx в xls, и он будет работать:)

это работает для меня, вы можете попробовать его.