簡體   English   中英

PHPExcel將xls DATETIME更改為數字

[英]PHPExcel changes xls DATETIME to numbers

當我將.xls文件上傳到PHPExcel時,我想讀取原始數據。
我讀到有關使用“ getValue()”的信息,它應該對其進行修復。
但就我而言不是。

所以在.xls中我有一列:2015-10-08 11:31
當我使用PHPExcel處理它時,我得到:42285.47993055556

因為PHPExcel首先讀取文件,所以我不能使用PHP來創建DATETIME對象?

PHP

for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
    for ($col = 0; $col < $highestColumnIndex; ++ $col) {
        $cell = $worksheet->getCellByColumnAndRow($col, $row);
        $val[] = $cell->getValue();

我該如何解決?

扔了被接受的answear,我得到了下面的代碼為我工作:

for ($row = 2; $row <= $highestRow; ++ $row) {
  $val=array();
  for ($col = 0; $col < $highestColumnIndex; ++ $col) {
    $cell = $worksheet->getCellByColumnAndRow($col, $row);
    $val[] = $cell->getValue();
  }//close 2nd for loop
  //Create and convert xls date to php date
  $val[10] = PHPExcel_Shared_Date::ExcelToPHPObject($val[10]);
  $val[10] = $val[10]->format('Y-m-d H:i:s');
  //query stuff...
}//close first for loop    

沒有PHPExcel不會更改它。...它已經是一個數字

MS Excel將日期/時間存儲為自1900年1月1日以來(或如果使用Mac日歷, 42285.47993055556 1904年1月1日)的天數作為序列化的時間戳。...該值42285.47993055556是與2015-10-08 11:31:06對應的Excel序列化的時間戳2015-10-08 11:31:06 然后,存儲該值的單元格具有數字格式代碼,該代碼會將其轉換為該日期/時間的人工表示形式。 如果更改該掩碼,它將更改該值的可見外觀,但是基礎的序列化值保持不變。

如果你這樣做

$val[] = $cell->getFormattedValue();

然后PHPExcel將數字格式掩碼應用於該序列化的日期/時間戳,並基於存儲在Excel文件中的掩碼返回包含該日期的人類可讀格式的字符串。

如果你這樣做

$val[] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());

然后PHPExcel將返回一個unix時間戳,您可以將其傳遞給PHP date()函數進行格式化

如果你這樣做

$val[] = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getValue());

然后,PHPExcel將返回一個PHP DateTime對象,您可以對其進行格式化,然后使用DateTime對象format()方法進行format()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM