文件名feed1.xls在php中无法读取。

6

你好,我想使用Zend框架解析Excel文件。我去了Zend开发者社区并找到了一个下载phpexcelreader的解决方案。我下载了代码并在本地设置了一个项目并运行了代码。当我尝试读取一个.xlsx文件时,它生成了一个错误。

The filename feed1.xlsx is not readable

我将文件保存为.xls格式,并成功地解析了代码。现在我想在我开发的Zend框架项目中实现这个功能。我创建了一个模型,在我的项目中使用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>';
}
}

我在控制器中调用了这个模型函数。但它生成了与我在本地使用 .xlsx 文件时发现的相同错误。但我正在读取由在本地运行的简单项目中运行的代码解析的 .xls 文件。我也在本地运行 zend 框架。 我的代码有什么问题?或者有没有其他方法来完成相同的任务?

如果你正在使用Spreadsheet_Excel_Reader,那么phpexcel标签是不合适的...phpexcel是一个特定的库,不是Spreadsheet_Excel_Reader库。 - Mark Baker
电子表格_Excel_阅读器也不能读取.xlsx文件...你是否将原始的.xlsx文件另存为Excel95 .xls文件,或者只是将其重命名了? - Mark Baker
@MarkBaker 我正在将原始文件保存为 .xls 格式。还有其他解决方案吗? - Awais Qarni
没有更多信息(尤其是没有文件)很难确定是否有解决方案。现在S_E_R相当过时且不受支持,而我自己的知识领域在其他用于读取Excel文件的库中(尤其是PHPExcel)。 - Mark Baker
5个回答

6

我认为问题在于.xlxs文件的编码类型,而不是设置文件权限。如果你改变权限,它将对你无效。问题在于OLE_IDENTIFIER(��ࡱ�)

所以你的文件数据必须以��ࡱ�数据开头。即使我也在寻找适当的解决方案。能有人帮忙吗??


如果您有一个单独的(即使是类似的)问题,请为其创建一个单独的问题。 - Trygve Laugstøl
你找到这个问题的解决方案了吗?我也遇到了同样的问题。 - Oleksandr IY

2
据我所知,您看到的错误是由以下代码行设置的:
if(!is_readable($sFileName)) {
    $this->error = 1;
    return false;
}

由于某种原因,它无法读取您提供的文件,可能是由于权限/用户问题或文件路径错误。
如果您使用的是*nix服务器,应确保运行Web服务器的用户有权读取Excel文件。 Web服务器可能会以不同于拥有该文件的用户的身份运行。 您也可以尝试将权限设置为666。
如果它仅仅找不到该文件,提供完整路径可能有所帮助(例如:$data->read('/usr/local/apache2/htdocs/Excelreader/feed1.xls');)。

1
在php文件头部加入mb_internal_encoding("8bit");对我很有帮助。

1
错误信息可以更加详细。我在read()函数中添加了一个包装器,像这样:
if (file_exists($sFileName))
{
     ...
}else{
    die('The file ' . $sFileName . ' was not found');
}

果然,我整个时间都在错误的目录中寻找!!


0
请将您的xlsx文件转换为xls格式,它就可以正常工作了 :)
对我来说它是有效的,您可以尝试一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接