文件名feed1.xls在php中不可读

时间:2012-01-24 07:22:55

标签: php excel zend-framework

您好我想使用zend框架解析excel文件。我转到Zend Developer Zone并找到了下载phpexcelreader的解决方案。我在localhost下载了代码集项目并运行代码。当我想读取.xlsx文件时,它会生成错误

The filename feed1.xlsx is not readable

我以.xls格式保存文件并运行成功解析文件的代码。现在我想在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文件发现的相同错误。但我正在阅读.xls文件,该文件由localhost上的简单项目运行的代码解析。我也在本地运行zend框架。

我的代码有什么问题?或者有没有办法完成同样的任务。?

5 个答案:

答案 0 :(得分:4)

我认为问题在于.xlxs文件的编码类型而不是设置文件权限。如果您更改权限,它将不适合您。问题出在OLE_IDENTIFIER (��ࡱ�)

因此,您的文件数据必须以��ࡱ�数据开头。即使我正在为此寻找合适的解决方案。任何人都可以帮忙吗?

答案 1 :(得分:2)

我可以说,你看到的错误是由这行代码设置的:

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

由于某种原因,它无法读取您提供的文件,因为存在权限/用户问题,或者文件路径错误。

如果您在* nix服务器上,则应确保运行Web服务器的用户有权读取excel文件。 Web服务器可能以与拥有该文件的用户不同的用户身份运行。您也可以尝试将权限设置为666。

如果它只是找不到文件,提供完整路径可能有所帮助,(例如$data->read('/usr/local/apache2/htdocs/Excelreader/feed1.xls');

答案 2 :(得分:1)

错误当然可能更具描述性。我在read()函数中添加了一个包装器,如下所示:

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

果然,我一直在寻找错误的目录!!

答案 3 :(得分:1)

php文件头中的

mb_internal_encoding("8bit");为我做了诀窍。

答案 4 :(得分:0)

请将您的xlsx文件转换为xls,它将起作用:)

它对我有用,你可以试试。