2015-06-09 85 views
0

当导入.csv文件时,使用货币值的单元格(例如,使用getCellValue时,£102.30返回为bool(false)。PHPExcel货币获取单元格值返回为布尔值false

$objReader = \PHPExcel_IOFactory::createReader('CSV'); 
$objReader->setReadDataOnly(true); 
$loadedSpreadsheet = $objReader->load($spreadsheet); 
$activeSheet = $loadedSpreadsheet->getActiveSheet(); 

var_dump($activeSheet->getCell('Q13')->getValue()); // bool(false) 

这绝对是正确的单元格,因为任何一侧的柱子都能正常工作。

我试过设置编码为UTF-8,但是这并没有任何工作

行13:

000001,Mags,Red,0,65,720mm x 1080mm,0,0,0,0,0,0,0,0,,1,£3.22,Mag,,,,,,,,, 
+0

你可以o在文本编辑器中输入文件,并将该文件的第13行粘贴到您的问题中? –

+0

@Mark Ba​​ker更新 – iswinky

+0

因此,根本没有在文件中引用字符串,严格来说这不是有效的CSV;但我猜PHPExcel不能处理未定义的字符集 –

回答

1

所以字符串文件中没有报价为所有,严格这不是一个有效的CSV;但我猜PHPExcel无法处理未定义的字符集...默认是UTF-8,但如果这不是UTF-8文件,那么您需要让PHPExcel知道正在使用的字符集:

$objReader->setInputEncoding('ISO-8859-1'); 

(或任何字符集的文件正在使用),因此它可以知道如何将它转换为UTF-8

PS

$objReader->setReadDataOnly(true); 

是多余的,因为一个CSV文件不能包含任何东西,但只有数据