Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpExcel csv2excel浮点值错误_Php_Csv_Phpexcel - Fatal编程技术网

phpExcel csv2excel浮点值错误

phpExcel csv2excel浮点值错误,php,csv,phpexcel,Php,Csv,Phpexcel,我有一个csv输入文件,并试图在phpexcel的帮助下将其转换为excel文件。 这段对话有一个缺点。浮点值未正确转换 csv输入 1,Aal Albert,0.876, 2,Äsche Elke,0.1752, 3,Bachforelle Barbara; Bachforelle Barnabas,0.4374, 以excel()结尾 如何保持原始浮点值 这是我在stackoverflow上找到的phpexcel对话片段: /** Error reporting */ error_repo

我有一个csv输入文件,并试图在phpexcel的帮助下将其转换为excel文件。 这段对话有一个缺点。浮点值未正确转换

csv输入

1,Aal Albert,0.876,
2,Äsche Elke,0.1752,
3,Bachforelle Barbara; Bachforelle Barnabas,0.4374,
以excel()结尾

如何保持原始浮点值

这是我在stackoverflow上找到的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');
/**错误报告*/
错误报告(E_全部);
ini设置(“显示错误”,真);
ini设置(“显示启动错误”,TRUE);
日期默认时区设置(“欧洲/伦敦”);
定义('EOL',(PHP_SAPI=='cli')?PHP_EOL:'
'); ini_集(“精度”、“15”); /**包括PHPExcel*/ 需要_once'../Classes/PHPExcel.php'; 包括“../Classes/PHPExcel/IOFactory.php”; $objReader=PHPExcel_IOFactory::createReader('CSV'); $objPHPExcel=$objReader->load('test.csv'); $objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); $objWriter->save('MyExcelFile.xls');
致以亲切的问候

toni

将单元格格式设置为“文本”或“一般”

例如


除非您应该将0.876视为浮点,而不是告诉PHPEXcel将其视为字符串;只需将单元格的数字格式掩码设置为适当的小数位数,但在答案中,小数位数是可变的,因此将其设置为字符串应避免在将其格式化为浮点之前必须通过编程计算小数位数。好,我很抱歉纠正您的错误-我对PHPExcel的了解还不够深入,因此不必担心,它只意味着额外的几行代码:)在正常情况下(例如Windows上的MS Excel),我完全同意您的看法!多姆,谢谢你的回复。有没有办法告诉phpExcel将所有输入作为字符串进行线程化?因此,我看不到通过每个单元循环的方法。伪代码:$objPHPExcel->getActiveSheet()->getAllCells(“”)->setValue(phpexcell\u Cell\u数据类型::TYPE\u字符串);正确的值存储在单元格中,但默认数字格式为2dp;在MS Excel中正确检查该值,您将看到0.4374仍应为0.4374,但默认Excel显示舍入为2dp时,它将显示为0.44
/** 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');
$objPHPExcel->getActiveSheet()->getCell('A3')->setValueExplicit('0.876', PHPExcel_Cell_DataType::TYPE_STRING);