gpt4 book ai didi

PHPExcel:如何检查 XLS 文件是否有效?

转载 作者:可可西里 更新时间:2023-10-31 23:51:40 24 4
gpt4 key购买 nike

我正在使用 PHPExcel 1.7.8 读取由随机用户上传的 .xls 文件。使用有效的 .xls 文件一切正常,但现在我想使用无效文件进行一些测试,以检查程序是否显示正确的错误消息。

所以我拿了一个.csv文件,并用.xls重命名它(没有转换任何东西,只是改变了名字)到最后,只是为了检查.. .
splinter 的! :)

DOM ELEMENT: HTML
DOM ELEMENT: BODY
DOM ELEMENT: P
START OF PARAGRAPH:
END OF PARAGRAPH:
FLUSH CELL: A1 => block,date,hour...

array
1 =>
array
'A' => string 'block,date,hour...' (length=2777)

{"step":"error","errors":[],"warnings":[]}

如您所见,显示了一条错误消息,我没有要求它,然后是我通常编写的 JSON。

它发生在这一行:

<?php
echo "Loading file\n";
try {
if (!($objPHPExcel = PHPExcel_IOFactory::load('path'))) {
echo "Failed\n";
return;
// ...
}
} catch(Exception $e) {
echo 'Exception !';
}
echo "Done\n";

这段代码显示:

Loading file
/!\ ERROR MESSAGE ABOVE /!\
Done

我的问题是,在我尝试解析文件之前,PHPExcel 或其他任何东西是否有办法检查文件是否是有效的 XLS 文件

谢谢。

最佳答案

即使是一年多的问题,我仍然觉得弄清楚如何处理这个问题很麻烦,我会尝试在这里发布我的答案。

如果使用 try/catch block 不起作用(在我的例子中,我将一个 jpg 文件重命名为 xls 并且错误处理程序不起作用,而不是抛出错误,无效文件只是抛出一个警告),您可以考虑使用 canRead() 进行手动检查,正如 Mark 所说,这是一个如何使用此功能的示例。

如果你知道你的文件类型是什么,你可以手动定义它并检查它们:

$valid = false;
$types = array('Excel2007', 'Excel5');
foreach ($types as $type) {
$reader = PHPExcel_IOFactory::createReader($type);
if ($reader->canRead($file_path)) {
$valid = true;
break;
}
}

if ($valid) {
// TODO: load file
// e.g. PHPExcel_IOFactory::load($file_path)
} else {
// TODO: show error message
}

希望这对遇到同样问题的人有所帮助。

关于PHPExcel:如何检查 XLS 文件是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com