2013-04-26 55 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