在 PHP EXCEL 中读取日期格式

2022-08-30 21:30:14

我已经使用PHP Excel阅读了excel文件。

但是该excel文件包含一些日期(时间格式)PHP excel在这种情况下返回错误的值

我的代码在下面

enter code hereinclude 'Classes/PHPExcel/IOFactory.php';

$inputFileName = 'index.xlsx';

//  Read your Excel workbook
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch (Exception $e) {
    die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME)
        . '": ' . $e->getMessage());
}

//  Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

//  Loop through each row of the worksheet in turn
for ($row = 1; $row <= $highestRow; $row++) {
    //  Read a row of data into an array
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
        NULL, TRUE, FALSE);

    foreach ($rowData[0] as $k => $v)
        echo "Row: " . $row . "- Col: " . ($k + 1) . " = " . $v . "<br />";
}

任何人都可以对此有所帮助。在 PHPExcel 中有一些针对这种情况的特定函数。

我的输入excel文件在下面

2013-12-12, 2013-12-13

我的输出在下面

41621, 41631

有一些方法可以隐蔽日期格式输出数据?


答案 1

当您使用PHPExcel_Reader_Excel5 lib读取xls文件时,文件中的数据为39984,但Excel使用日期格式化掩码将其格式化为“2009-06-20”?

Excel 将日期保存为自 1900 年 1 月 1 日(在 Windows 1900 日历上)以来的天数。PHPExcel以相同的方式存储其日期,但不会自动为您格式化它们。

您可以使用
中的任何其他格式掩码
自行格式化它们
,或者使用
将其转换为PHP日期,然后使用PHP的
函数根据需要对其进行格式化PHPExcel_Style_NumberFormat::toFormattedString(39984,PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY)PHPExcel_Style_NumberFormatPHPExcel_Shared_Date::ExcelToPHP(39984)date()

例:

$val = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()));

答案 2

另一种方法是使用gmdate:

$excel_date = 43010; //here is that value 41621 or 41631
$unix_date = ($excel_date - 25569) * 86400;
$excel_date = 25569 + ($unix_date / 86400);
$unix_date = ($excel_date - 25569) * 86400;
echo gmdate("Y-m-d", $unix_date);

//result is 2017-10-02

推荐