4

我在Yii2中有一個使用PHPExcel庫讀取Excel文件的項目。 我已經包含在一般格式的單元格數據的事務ID列。 Screenshoot我的Excel文件: enter image description herePHP:如何以Excel數據以科學記數法/指數格式從字符串格式獲取數據?

你可以在上面看到,如果我輸入數字的15個字符,並把兩個點裏面。它將顯示爲數字。

第一實施例:輸入=> 800.003.151476962在細胞表現爲 image式酒吧表現爲 image

但是,如果數量的輸入15個字符,而不點內時,它將顯示爲科學記數法/指數

第二實施例:輸入=> 800003151476925在細胞表現爲 image =>科學記數法/指數數據格式 和式酒吧表現爲 image

當我想讀我的PHP中的數據,我的PHP將讀取二防爆數據科學記數法/指數格式不是字符串/數字/小數。

我如何能得到二防爆數據(無論是字符串或數字或十進制格式)在我的PHP不8.00003E + 14

謝謝:)

注意:其實我已閱讀並嘗試在Convert exponential to a whole number in PHPConvert exponential number to decimal in phpConvert exponential number to decimal in php建議,但我什麼也沒得到。

回答

5

如果你把2個點(小數點)的值,那麼就只能是一個字符串;因此MS Excel會將它格式化爲General(MS Excel的默認單元格格式)作爲字符串。用一個點(小數點),PHPExcel將它視爲一個數字,並相應地設置數據類型;並且MS Excel會將其視爲浮點數,並且MS Excel General如果格式規則大於標準的32位整數大小,則將其格式化爲科學格式,將其視爲浮點數。

如果您想要強制字符串格式化,那麼您需要明確地這樣做,或者通過將其設置爲字符串數據類型使用setCellValueExplicit()來強制將其設置爲字符串;或設置知識比General0

$objPHPExcel->getActiveSheet()->getStyle('A9') 
    ->getNumberFormat() 
    ->setFormatCode(
     '0' 
    ); 
+0

感謝其他格式掩碼:)不將你的代碼只以上可用於寫一個Excel文件? – Blackjack

+1

如果你正在讀取這個值,那麼它對32位PHP中的整數來說太大了,即使使用64位PHP,它也會以科學的格式顯示,如果你只是簡單地回顯一下它(與PHPExcel無關,只是基本的PHP)。使用PHP的'sprintf()'或'number_format()'函數將其顯示爲整數 –

+0

儘管您的建議對我的案例沒有任何作用,但至少我在下次獲得新知識時可能會有用。謝謝:D 我試過使用'sprintf'顯示字符串,但它顯示** 8.00003E + 14 **作爲字符串,而不是** 800003151476922 **作爲字符串 – Blackjack

相關問題