簡體   English   中英

致命錯誤:未捕獲的錯誤:在第 58 行調用 bool 上的成員函數 format()

[英]Fatal error: Uncaught Error: Call to a member function format() on bool on line 58

我必須從 CSV 文件中檢索數據並顯示以字符串格式編寫的日期的月份和年份。我運行代碼,它顯示 A non well-formed numeric value燼遇到錯誤。我還嘗試了其他方法來轉換日期和我得到每個日期的 1900 年。

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
require('php_library/spreadsheet-reader-master/php-excel-reader/excel_reader2.php');

require('php_library/spreadsheet-reader-master/SpreadsheetReader.php');


if(isset($_FILES["filename"]))
{
 $file = $_FILES["filename"]["tmp_name"];
 $file_open = fopen($file,"r");
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$spreadsheet = $reader->load($file);
$sheetData = $spreadsheet->getActiveSheet()->toArray();
 foreach ($sheetData as $i=>$Row)
    {
        foreach($Row as $j=>$column)
        {
            // echo $Row[$j].", ";
            if($i == 0)
            {
            if($Row[$j] == "Codice cliente")
                $column1 = $j;
            if($Row[$j] == "Data emissione")
            {
                $column2 = $j;
                // echo $j;
            }
        }
            
        }
      

    }
foreach ($sheetData as $i=>$row)

    {  
        if($i!=0){
      json_encode(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[$column2])->format('Y'));
}

在此處輸入圖像描述

我想這是您代碼中的違規行; 這是唯一使用->format()方法的行。

json_encode(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[$column2])->format('Y'));

讓我們試着把它分成多行以便它可讀。

$excelDatestamp = $row[$column2];
$dto = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject( $excelDatestamp ); 
$year = $dto->format( 'Y' );
json_encode( $year );

在我看來,由您的代碼重構生成的$excelDatestamp很可能是格式錯誤的。 這使得::excelToDateTimeObject()返回false ,讓您知道您有錯誤。 然后你嘗試像這樣調用格式方法(false)->format( 'Y' ) 這就是 php 拋出您向我們展示的錯誤消息的原因。

而且,您不會對json_encode()的輸出做任何事情,所以即使一切正常,它也會丟失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM