gpt4 book ai didi

PHPExcel XLS 未被识别为 OLE 文件

转载 作者:行者123 更新时间:2023-12-02 07:59:41 24 4
gpt4 key购买 nike

我使用 PHPExcel 库开发了一个 PHP Web 应用程序。除了某些 Excel 文档无法被识别为 Excel 文档之外,一切正常。当我使用 Microsoft Excel 打开这些文件并将它们另存为 xls、csv、xlsx 时,一切正常。所以...我认为某些 Excel 文件与其扩展名并不完全一样。也许它们是伪装的 XML? PHPExcel 是否可以获得 XML 支持?

错误如下:

fatal error :在/home/www/text/excel/reader/Classes/PHPExcel/Shared/OLERead 中未捕获异常“PHPExcel_Reader_Exception”,并显示消息“文件名/tmp/phphrnIR2 未被识别为 OLE 文件” .php:89 堆栈跟踪: #0/home/test/excel/reader/Classes/PHPExcel/Reader/Excel5.php(1164): PHPExcel_Shared_OLERead->read('/tmp/phphrnIR2') #1/home/www/文本/excel/reader/Classes/PHPExcel/Reader/Excel5.php(612): PHPExcel_Reader_Excel5->_loadOLE('/tmp/phphrnIR2') #2/home/www/test/excel/actions.php(60): PHPExcel_Reader_Excel5 ->load('/tmp/phprnIR2') #3/home/www/test/excel/index.php(77): include_once('/home/www/test/ex...') #4 {main}在第 89 行/home/www/test/excel/reader/Classes/PHPExcel/Shared/OLERead.php 中抛出

以及文件识别的php代码:

 $name     = $_FILES['file']['name'];
$tname = $_FILES['file']['tmp_name'];
$type = $_FILES['file']['type'];

if($type == 'application/vnd.ms-excel')
{
// Excel 97 extension
$ext = 'xls';
}
else if($type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
{
// Excel 2007 and 2010 extension
$ext = 'xlsx';
}


else if($type == 'text/csv')
{
// Excel CSV extension
$ext = 'csv';


}else{

// Invalid Extension
?>
<script languaje="javascript">
swal("Bad file...", "A valid extension must be XLS, XLSX o CSV!", "error");
</script>
<?php
exit();
}
//reader creation
$objReader = PHPExcel_IOFactory::createReader($$ext);

//uploading file
$objPHPExcel = $objReader->load($tname);


$dim = $objPHPExcel->getActiveSheet()->calculateWorksheetDimension();

最佳答案

好吧,尽管它有 .xls 扩展名,但它完全有可能不是 BIFF 格式的 xls 文件。

当文件是 csv 格式的文件时,很多人都会给它加上 xls 扩展名,甚至是 HTML 标记......永远不要相信该扩展名;由于 mime 类型将基于文件扩展名,因此您也不能仅从表面上理解它。

而不是根据扩展名/mime 类型专门创建一个阅读器......使用 PHPExcel IOFactory recognize() 方法来查看 PHPExcel 认为该文件是什么格式。或者调用 IOFactory 的 load() 方法,以便它可以尝试自行识别文件格式。

显然这个文件不是 BIFF 格式(或者是使用版本 5 之前的 BIFF 格式的早期版本创建的),否则它将被识别为 OLE 文件

关于PHPExcel XLS 未被识别为 OLE 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32604531/

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