2013-04-26 54 views
0

我有一個csv輸入文件,並試圖通過phpexcel幫助將其轉換爲excel文件。該對話與一個錯誤一起工作。浮動值不正確轉換phpExcel csv2excel浮動值錯誤

CSV輸入

1,Aal Albert,0.876, 
2,Äsche Elke,0.1752, 
3,Bachforelle Barbara; Bachforelle Barnabas,0.4374, 

在Excel中()結束

1 Aal Albert 0.88 
2 Äsche Elke 0.18 
3 Bachforelle Barbara; Bachforelle Barnabas 0.44 

我怎樣才能保持原來的浮點值?

這是談話的phpexcel片段,我發現這裏的計算器:

/** Error reporting */ 
error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 
date_default_timezone_set('Europe/London'); 

define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); 
ini_set("precision", "15"); 

/** Include PHPExcel */ 
require_once '../Classes/PHPExcel.php'; 
include '../Classes/PHPExcel/IOFactory.php'; 

$objReader = PHPExcel_IOFactory::createReader('CSV'); 

$objPHPExcel = $objReader->load('test.csv'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('MyExcelFile.xls'); 

隨着親切的問候,

託尼

+1

正確的值存儲在單元格中,但默認的數字格式是2dp;在MS Excel中正確檢查數值,你會發現0.4374仍然應該是0.4374,但是默認的Excel顯示四捨五入爲2dp它會顯示爲0.44 – 2013-04-26 13:07:11

回答

0

格式的單元格爲「文本」,甚至只是「常規」 。

例如

$objPHPExcel->getActiveSheet()->getCell('A3')->setValueExplicit('0.876', PHPExcel_Cell_DataType::TYPE_STRING); 
+0

除非你應該把0.876當作一個浮點數,而不是告訴PHPEXcel把它當作一個串;並將單元格的數字格式掩碼設置爲適當的小數位數 – 2013-04-26 13:05:29

+0

但在答案中,可變數目的小數位數,因此將其設置爲字符串應避免在格式化之前以編程方式計算小數位數它作爲一個浮動。 – Dom 2013-04-26 13:07:15

+2

好的,我很抱歉糾正你 - 我對PHPExcel知之甚少,不知道有什麼更好的 – 2013-04-26 13:08:05