проблема с Excel импорт MS Excel - PullRequest
0 голосов
/ 30 августа 2018

При импорте Excel с использованием файла MS Excel не работает получение этой ошибки

Array ( [0] => 42000 [1] => 1065 [2] => Query was empty ) 
Warning: A non-numeric value encountered in C:\xampp\htdocs\Classes\PHPExcel\Shared\Date.php on line 135

Warning: A non-numeric value encountered in C:\xampp\htdocs\Classes\PHPExcel\Shared\Date.php on line 136

Warning: A non-numeric value encountered in C:\xampp\htdocs\Classes\PHPExcel\Shared\Date.php on line 137

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\Classes\PHPExcel\CachedObjectStorage\CacheBase.php on line 196

date.php

 if ($dateValue >= 1) {
            $utcDays = $dateValue - $myexcelBaseDate;
            $returnValue = round($utcDays * 86400);
            if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) {
                $returnValue = (integer) $returnValue;
            }
        } else {
            $hours = round($dateValue * 24);
            $mins = round($dateValue * 1440) - round($hours * 60);
            $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60);
            $returnValue = (integer) gmmktime($hours, $mins, $secs);
        }

Но это работает для libre office. Любая помощь будет признательна.

1 Ответ

0 голосов
/ 30 августа 2018

я думаю, что вы могли бы просто привести к int $dateValue = (int)$dateValue;

я предполагаю, что строки под остальными равны 135, 136, 137

if ($dateValue >= 1) {
    $utcDays = $dateValue - $myexcelBaseDate;
    $returnValue = round($utcDays * 86400);
    if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) {
        $returnValue = (integer) $returnValue;
    }
} else if ($dateValue < 0){
    $dateValue = (int)$dateValue;
    $hours = round($dateValue * 24);
    $mins = round($dateValue * 1440) - round($hours * 60);
    $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60);
    $returnValue = (integer) gmmktime($hours, $mins, $secs);
}

Кроме того, иногда вам нужно увеличить время выполнения, вы можете сделать это следующим образом:

set_time_limit(60); // 60 seconds.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...