29

PHPExcelを使用してExcelから日付を取得しようとしています。しかし、私は日付を取得していません。1970 からの秒数ではない文字列値を取得しています。

私が試したコードは

$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
4

5 に答える 5

59

使ってみる

$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if(PHPExcel_Shared_Date::isDateTime($cell)) {
     $InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 
}

PS

@DiegoDD: $format が日付の望ましい形式であることを言及する必要があります。例えば:

 $InvDate = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 

PPS 2019 新しいバージョンの PhpOffice https://stackoverflow.com/a/45070205/426533で回答 @gabriel-lupu を見てください

于 2013-10-30T06:26:49.657 に答える
2

In the new version of the library, PhpOffice, the function that handles this is excelToDateTimeObject so the new code format should be:

$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if (PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) {
     $InvDate = PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($InvDate); 
}
于 2017-07-13T01:52:11.980 に答える
0

次の方法で、セルの値を文字列 (日付の値も) として取得できます。

$sheet = $objPHPExcel->getActiveSheet();
$lastRow = $sheet->getHighestRow();
$lastColumn = $sheet->getHighestColumn();

$rows = $sheet->rangetoArray('A2:'.$lastColumn . $lastRow, NULL, True, True, False);
foreach ($rows as $row => $cols) {
    foreach($cols as $col => $cell) {
        echo trim($cell).'<br>'; // Gives the value as string
    }
}
于 2018-04-11T08:34:18.737 に答える