PHPExcel在xls和xlsx之间切换

时间:2016-05-20 07:35:24

标签: php phpexcel

我正在编写一个从邮件附件中读取.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

是否有人知道为什么这不起作用,或者在读者之间切换的方式不同?

2 个答案:

答案 0 :(得分:0)

你可以尝试:

SELECT result_event 
FROM results 
WHERE result_event IN (
    SELECT MAX(event_id) FROM events
);

答案 1 :(得分:0)

列表中有一个损坏的文件,标识为xls文件但是是xlsx文件。我删除了文件,它现在完美运行了!