解决 PHPExcel 长数字串显示为科学计数[转]

解决 PHPExcel 长数字串显示为科学计数

在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号。

使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种:
1、设置单元格为文本

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle(‘Simple‘);
//设置A3单元格为文本
$objPHPExcel->getActiveSheet()->getStyle(‘A3‘)->getNumberFormat()
	->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
//也可以设置整行或整列的style
/*
//E 列为文本
$objPHPExcel->getActiveSheet()->getStyle(‘E‘)->getNumberFormat()
	->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
//第三行为文本
$objPHPExcel->getActiveSheet()->getStyle(‘3‘)->getNumberFormat()
	->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
*/更多的格式可以在PHPExcel/Style/NumberFormat.php中找到。注意:上述的设置对长数字字符串还是以文本方式来显示科学计数法的结果,原因可能php在处理大数字时采用的科学计数法。

2、在设置值的时候显示的指定数据类型

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle(‘Simple‘);

$objPHPExcel->getActiveSheet()->setCellValueExplicit(‘D1‘,
                                 123456789033,
                                 PHPExcel_Cell_DataType::TYPE_STRING);

3、在数字字符串前加一个空格使之成为字符串

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle(‘Simple‘);

$objPHPExcel->getActiveSheet()->setCellValue(‘D1‘, ‘ ‘ . 123456789033);

推荐使用第二、三种,第一种没有根本解决问题。

=====================================================================================================

以上内容为转载,个人补充如下:

第一种方法中不起作用,现在要这样设置才起作用:

$objPHPExcel->getActiveSheet()->getStyle(‘S‘.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);

但是用这种方法,如果数字长度超过15位,则15为之后的都会变成0,原因如下:

excel最多支持的数值型数据的长度是15位。当数据长度到过15位时,从第16位开始,后面的数字全部被默认修改为0。

时间: 2024-10-18 08:10:09

解决 PHPExcel 长数字串显示为科学计数[转]的相关文章

解决 PHPExcel 长数字串显示为科学计数

解决 PHPExcel 长数字串显示为科学计数 https://github.com/PHPOffice/PHPExcel/ 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. 使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种: 1.设置单元格为文本 $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetInd

PHPExcel 长数字串显示为科学计数

解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. 使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种:1.设置单元格为文本 $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()-&

php导出excel长数字串显示为科学计数方法与最终解决方法

1.设置单元格为文本 $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple');//设置A3单元格为文本 $objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat()->setFormatCode(PHPExcel_

关于PHPExcel导出Excel时身份证,数字会导出为科学计数的处理方法

原文:关于PHPExcel导出Excel时身份证,数字会导出为科学计数的处理方法 上次在开发一个项目时,用到PHPExcel导出数据,其中有导出身份证等长串数字时导出的Excel中显示为科学计数方式. 这种显示很不人性化而且量多了修改起来也很麻烦. 这是因为Excel处理数字里默认数字太长会转化为科学计数法,处理起来很简单,我们在导出时把数字转为字符串,Excel就不会识别为数字了,也就不会显示为科学计数方式. 我的处理方式是在变量后面加个空格,简单方便. $usercode .= ' '; $

SAP关于标准ALV报表导出Excel的问题与解决:长数字

SAP关于标准ALV报表导出Excel的问题与解决:长数字 描述:在使用标准ALV功能时,使用本地文件可以把内容导到EXCEL中 问题:如果在报表中有类似银行账户.身份证号等较长数字的字段,直接导出EXCEL,在EXCEL中这些字段将会使用科学计数法的格式显示导致这列数据不正确. 解决方法一:导出时选择未转换的格式,然后再整理(分列) 解决方法二:使用ALV工具栏中按钮Excel适当位置 解决方法三:导出—电子表格—所有可用格式(选择“在现有XXL格式中”) ALV 导出电子表格的文件格式固定了

IT公司100题-25-求字符串中的最长数字串

问题描述: 实现一个函数,求出字符串中的连续最长数字串.例如输入”12345cbf3456″,输出”12345″. 函数原型为: void conti_num_max( const char * src, char * dest); dest保存最长数字串,返回void. 分析: 遍历一遍字符串,记录起始位置和长度即可. 代码实现: 1 // 25.cc 2 #include <iostream> 3 #include <cstring> 4 using namespace std

Oracle中较长number型数值的科学计数显示问题

表中有id列,类型为number(38).在sqlplus中查询的时候,查询结果的显示方式为科学计数法: ID ---------- 4.5572E+18 4.5574E+18 4.5585E+18 这样看起来很不直观,而之所以这样显示的原因是在SQL*Plus下,小于等于10位的精度显示的是很直观的形式,大于10位精度的则显示为科学计数的形式. 以下为测试内容: SQL> select * from v$version; BANNER -----------------------------

导出csv文件数字会自动变科学计数法的解决方法

其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0.解决这个问题:只要把数字字段后面加上显示上看不见的字符即可,字符串前面或者结尾加上制表符"\t".php 程序可以这样判断,注意一定是"\t",不是'\t'.

PHP 如何显示大数字,防止显示为 科学计数法 形式

PHP 数字超过一定长度时,会自动转换为 科学计数法 的形式,如 1.2345678912346E+16: 如何 避免转换,让它原样展示呢? 不过,可以用PHP函数 number_format() 来格式化数字,参考代码如下: $str = number_format(123456789123456789123456, 0, '', ''); print_r($str); 原样输出: 123456789123456789123456 延伸阅读: PHP保留2位小数 格式化小数.浮点数