2017-11-22 8 views
0

私の列の形式はcell:dd/mm/yyyy hh:mmです。これらのワークシートを読むときは、この値だけを取得してmysqlに保存する必要があります。phpExcelで日時を取得する

デフォルトでは、私は日付を読んでいて、それを保存するための悪用を行っていますが、日付は奇妙な形式です。

セルの列の日付:13/11/2017 00:01

マイコード:

$inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    $objReader->setReadDataOnly(true); 
    $objPHPExcel = $objReader->load($inputFileName); 
    //Get worksheet and built array with first row as header 
    $objWorksheet = $objPHPExcel->getActiveSheet(); 
    //excel with first row header, use header as key 
    if($header){ 
     $highestRow = $objWorksheet->getHighestRow(); 
     $highestColumn = $objWorksheet->getHighestColumn(); 
     $headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true); 
     $headingsArray = $headingsArray[1]; 
     $r = -1; 
     $namedDataArray = array(); 
     for ($row = 2; $row <= $highestRow; ++$row) { 
      $dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true); 
      if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) { 
       ++$r; 
       foreach($headingsArray as $columnKey => $columnHeading) { 
        $namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey]; 
       } 
      } 
     } 
    } 
    else{ 
     //excel sheet with no header 
     $namedDataArray = $objWorksheet->toArray(null,true,true,true); 
    } 

値を直接読むことエコーを与えることです:ちょうど形式で日付を取得するために43052.000717593

私のコード私は必要と保存する

$data_mailing_file = explode(" ", $value['field_date']); 

    $dataP = explode('/', $data_mailing_file[0]); 
    $data_save = $dataP[2].'-'.$dataP[1].'-'.$dataP[0]; 

答えて

1

43052.000717593は、1900年1月1日(またはスプレッドシートがMacカレンダーを使用している場合は1904年1月1日)以降の日数をカウントしたMS Excelシリアライズされたタイムスタンプ値です。

フォーマットマスクを使用して値がdd/mm/yyyy hh:mmであり、その値が13/11/2017 00:01と表示されているMS Excel形式です。これは、その形式のマスクで期待されているとおりです。

日付の書式を変更する場合は、 rangeToArray()を呼び出す前にフォーマットマスクを変更することができます。 Excel形式のマスクyyyy-mm-ddは、適切な形式でのみ日付を表示します。

またそのシリアル化されたタイムスタンプ値を取得し、その後、あなたは、あなたがしたいしかしフォーマットはPHPのdate()機能を使用するか、DateTimeオブジェクトのformat()ことができ、それぞれのUNIXタイムスタンプまたはPHPのDateTimeオブジェクトを与えることPHPExcel_Shared_DateExcelToPHP()またはExcelToPHPObject()メソッドを使用します方法。

関連する問題