2017-09-22 54 views
0

我做了接收到一個完整的工作表類,減少信息量,和答案另一個工作表,在工作表中,有一個領域,其中有可能是負的時間(-H :1),功能:寫有PHPExcel負時間 - XLS

$file ['AH42'] = '-0:21'; 

$hdE = \PHPExcel_Style_NumberFormat::toFormattedString($file['AH42'], 'HH:i')); 

給我回:

$ hdE = '23: 39',當它應該返回'-0:21'

我該怎麼做?

讓PHPexcel返回負時間而不00:00

+0

使用'-hh:mm'作爲格式掩碼....但不要混淆與PHP的日期格式口罩MS Excel的日期格式口罩 –

+0

但每當你問像'讓PHPexcel返回負時間不計算從00:00',總是問你如何在MS Excel中先做... [微軟在這裏提供了幾個解決方案](https://support.microsoft.com/en-au/help/182247/negative -date-and-time-value-are-displayed-as-pound-signs-in-excel) –

+0

在Excel中,我使用格式[H]:MM Time,此字段表示時間不足以完成某個時間段,那麼它可能是正面的或者可能是負面的,這取決於剩下多少小時或剩餘多少小時(PS:它在LibreOffice中)。 – AnthraxisBR

回答

1

計算也許減號移動到格式字符串?

$file ['AH42'] = '0:21' 
$hdE = \PHPExcel_Style_NumberFormat::toFormattedString($file['AH42'], '-HH:i')); 
+0

這可以工作,但是這個字段可以是負面的,因爲它也可以是積極的,我無法控制我要修改的電子表格 – AnthraxisBR

-1

不要使用PHPExcel_Style_NumberFormat

PHPExcel V1.6 PHPExcel_Style_NumberFormat::toFormattedString功能呢,是叫sprintf([predefinedFormat], $value),或返回的date()結果。預定義的格式都不能處理負面時間。此外,您給出的格式參數-HH:i不是該函數的接受列表,因此它只返回該值。

PHPExcel V1.8確實允許格式化選項的高度複雜的自定義數字,但仍日期或時間不處理底片。

參見:PHPExcel github爲V1.8和cmsws phpexcel docs爲V1.6

只是自己格式化

注意,你不能只是調用date作爲該函數的作用,如PHP date()不支持負時間戳。所以你必須手動計算標誌。

$time = $file['AH42']; 
$hdE = ($time < 0) ? '-' : ''; 
$hdE = date('H:i', (1 * abs($time))); 

雖然這在技術上意味着你在1970年1月1日上時元時間戳操作,時間依然準確(這就是Excel中是如何工作的)。