PHPExcelを使用してExcelから日付を取得しようとしています。しかし、私は日付を取得していません。1970 からの秒数ではない文字列値を取得しています。
私が試したコードは
$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
使ってみる
$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 を見てください
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);
}
次の方法で、セルの値を文字列 (日付の値も) として取得できます。
$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
}
}