读取 PHP EXCEL 中的日期格式
Read Date Format in PHP EXCEL
我已经使用 PHP excel 阅读了 excel 文件。
但是 excel 文件包含一些日期(时间格式)PHP excel return 这种情况下的错误值
我的代码在下面
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
有什么方法可以隐藏日期格式的输出数据吗?
当您使用 PHPExcel_Reader_Excel5 lib 读取 xls 文件时,文件中的数据为 39984,但 Excel 使用日期格式掩码将其格式化为“2009-06-20”?
Excel 将日期保存为自 1900 年 1 月 1 日以来的天数(Windows 1900 日历)。 PHPExcel 以相同的方式存储日期,但不会自动为您设置格式。
您可以使用 PHPExcel_Style_NumberFormat::toFormattedString(39984,PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY)
或
PHPExcel_Style_NumberFormat
中的任何其他格式掩码自行格式化它们,或将其转换为PHP 使用
PHPExcel_Shared_Date::ExcelToPHP(39984)
的日期,然后使用 PHP 的 date()
函数根据需要格式化它
示例:
$val = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()));
另一种方法是使用 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
如果您使用 excel_reader 进行 excel 导入,您可以使用这样的代码。
include('excel_reader/xlsxreader/simplexlsx.class.php');
$xlsx_class = new SimpleXLSX();
$j['IST_Time'] = '43010';
echo date('Y-m-d',$xlsx_class->unixstamp($j['IST_Time'])); // Result will be 2017-10-02
为了时间
$j['IST_Time'] = '0.416666666667';
echo date('h:i A',$xlsx_class->unixstamp($j['IST_Time'])); //10:00 AM
或查看simplexlsx.class.php
要检索日期,您必须将 Excel 时间戳转换为 Linux 时间戳。
你需要知道的是:
- Excel 在 天 内表达日期,而 Linux 在 秒.
内表达
- Excel 从 1900 年开始计算,而 Linux 从 1970 年开始计算。
- 所有时间戳都在 GM 中(同时是 greenwitch),所以你 不应该 将其转换为
gmdate();
而是只使用 date();
因此,要从 Excel 转换为 Linux,您必须:
- 删除 70 年的天数:
25569
- 一天乘几秒:
86400
这是代码:
function fromExcelToLinux($excel_time) {
return ($excel_time-25569)*86400;
}
$linux_time = fromExcelToLinux(30637);
echo date("Y-m-d",$linux_time);
//should print 1983-11-17
这就是所有的人。
我已经使用 PHP excel 阅读了 excel 文件。
但是 excel 文件包含一些日期(时间格式)PHP excel return 这种情况下的错误值
我的代码在下面
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
有什么方法可以隐藏日期格式的输出数据吗?
当您使用 PHPExcel_Reader_Excel5 lib 读取 xls 文件时,文件中的数据为 39984,但 Excel 使用日期格式掩码将其格式化为“2009-06-20”?
Excel 将日期保存为自 1900 年 1 月 1 日以来的天数(Windows 1900 日历)。 PHPExcel 以相同的方式存储日期,但不会自动为您设置格式。
您可以使用 PHPExcel_Style_NumberFormat::toFormattedString(39984,PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY)
或 PHPExcel_Style_NumberFormat
中的任何其他格式掩码自行格式化它们,或将其转换为PHP 使用 PHPExcel_Shared_Date::ExcelToPHP(39984)
的日期,然后使用 PHP 的 date()
函数根据需要格式化它
示例:
$val = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()));
另一种方法是使用 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
如果您使用 excel_reader 进行 excel 导入,您可以使用这样的代码。
include('excel_reader/xlsxreader/simplexlsx.class.php');
$xlsx_class = new SimpleXLSX();
$j['IST_Time'] = '43010';
echo date('Y-m-d',$xlsx_class->unixstamp($j['IST_Time'])); // Result will be 2017-10-02
为了时间
$j['IST_Time'] = '0.416666666667';
echo date('h:i A',$xlsx_class->unixstamp($j['IST_Time'])); //10:00 AM
或查看simplexlsx.class.php
要检索日期,您必须将 Excel 时间戳转换为 Linux 时间戳。 你需要知道的是:
- Excel 在 天 内表达日期,而 Linux 在 秒. 内表达
- Excel 从 1900 年开始计算,而 Linux 从 1970 年开始计算。
- 所有时间戳都在 GM 中(同时是 greenwitch),所以你 不应该 将其转换为
gmdate();
而是只使用date();
因此,要从 Excel 转换为 Linux,您必须:
- 删除 70 年的天数:
25569
- 一天乘几秒:
86400
这是代码:
function fromExcelToLinux($excel_time) {
return ($excel_time-25569)*86400;
}
$linux_time = fromExcelToLinux(30637);
echo date("Y-m-d",$linux_time);
//should print 1983-11-17
这就是所有的人。