[英]PHPExcel switch between xls and xlsx
我正在编写一个从邮件附件中读取.xls和.xlsx文件的脚本。 我正在尝试使用identify方法基于文件扩展名在读者之间切换脚本。
$strSheetNameResult = 'QA Result';
$strSheetNameComments = 'QA Comments';
foreach($aPaths as $strPath) {
try {
$strFileType = PHPExcel_IOFactory::identify($strPath);
echo $strFileType;
$oReader = PHPExcel_IOFactory::createReader($strFileType);
$oReader->setLoadSheetsOnly($strSheetNameResult);
$oSheetData = $oReader->load($strPath)->getActiveSheet();
.xls可以正常工作,但是一旦遇到.xlsx文件,它就不会使用正确的阅读器,并给我一个错误:致命错误:
在第37行的C:\\ xampp \\ htdocs \\ cronjob \\ Test.php中的非对象上调用成员函数getCell()。
第37行:
$aSheetData['strProjectName'] = $oSheetData->getCell('B4')->getValue();
我认为此错误是由于未使用正确的阅读器引起的。
$aPaths
:
Array(
[0] => C:\xampp\tmp\105943-632345.xls
[1] => C:\xampp\tmp\112047-634744.xlsx
[2] => C:\xampp\tmp\112069-634917.xls
[3] => C:\xampp\tmp\113840-634955.xls
[4] => C:\xampp\tmp\115760-635374.xlsx
[5] => C:\xampp\tmp\120294-637780.xls
[6] => C:\xampp\tmp\120801-638144.xls
[7] => C:\xampp\tmp\121098-638118.xls
[8] => C:\xampp\tmp\124831-641137.xlsx
[9] => C:\xampp\tmp\127680-642962.xls
[10] => C:\xampp\tmp\127689-642665.xls
[11] => C:\xampp\tmp\127692-642784.xls
[12] => C:\xampp\tmp\127700-643048.xls
[13] => C:\xampp\tmp\127708-643096.xls
[14] => C:\xampp\tmp\128771-642241.xls
[15] => C:\xampp\tmp\129082-647219.xls
[16] => C:\xampp\tmp\129629-647241.xls
[17] => C:\xampp\tmp\134488-647334.xls
[18] => C:\xampp\tmp\134500-646313.xls
[19] => C:\xampp\tmp\134508-644581.xls
[20] => C:\xampp\tmp\134511-646521.xls
[21] => C:\xampp\tmp\134512-646136.xls
[22] => C:\xampp\tmp\134561-650010.xls
)
是否有人知道为什么这种方法不起作用,或者有不同的方式在读者之间进行切换?
你可以试试:
$file_types = explode(".", 'C:\xampp\tmp\105943-632345.xls');
$file_type = strtolower($file_types [count($file_types) - 1]);
if($file_type=='xls') {
$objReader = PHPExcel_IOFactory::createReader('Excel5');
}elseif($file_type=='xlsx'){
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
}else{
echo 'file type error!';
exit;
}
列表中有一个损坏的文件,标识为xls文件,但它是xlsx文件。 我删除了文件,现在可以正常使用了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.