软件导出数据到excel,数据都变成了科学计数,请问能否将EXCEL的默认数字格式改为数值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件导出数据到excel,数据都变成了科学计数,请问能否将EXCEL的默认数字格式改为数值?相关的知识,希望对你有一定的参考价值。

注意:无法在软件中复制数据,只能直接导出到EXCEL,但导出数据在Excel上显示为科学计数。
在Excel中导入CSV的数据,科学计数数据变为数值,但数值已经与软件中的数值不一样了。

这个要看你导出的数据的软件支持了。
你可以考虑,将导出的数据全部设置为文本型。因为,excel会自动将数据转换为科学记数法的情况,一般这些数据都大于8位了。这样的数据参加运算的可能性一般不大。而且,就算需要运算,之后再在excel中进行列单元格格式设置就好。但如果你的数据大于15位的话,数值型数据的精度会出现变化,excel只保留前15位数值,并将第16位开始的数据自动修改为0,导致数据混乱。这一现象在身份证数据中十分普遍。
参考技术A 导出的格式是csv、txt还是xls?读取外部文本数据时可以改格子的格式,改成文本即可。xls自己做个模板追问

不好意思,刚去确认一次,是csv格式的,该如何做?

追答

CSV的话,不要直接双击csv文件,先开Excel,然后从数据面板里,选择读取文本文件,选刚才导出的csv,在向导里先选以逗号或制表符分隔的数据,下一步,区分字符选逗号,下一步,然后出现了各列的类型,可以用shift+首尾点击的方式选取所有列,或是只选需要的列,将格式从标准改成文本,再完成即可

追问

你说的我已经试过,当这些从科学计数变为文本的数值已经和软件中的数值不一样了。

追答

数值在导出时已变那是导出软件的问题,再改也没用。要不然你上传个样本文件看看

本回答被提问者采纳
参考技术B 选择要更改的数据 右键 设置单元格格式 数字 数值即可。。。追问

假如为csv又该如何办?

phpexcel 导出 科学计数问题

今天在用php做excel导出的时候遇到了一个小问题,如图

单元格默认格式为常规格式,当数值过长时就会变成科学计数。

解决方法:

如果输出的excel的$data数据是手动添加的,那就在对应值得后面添加一个空格,这样的话输出的值就会转换成文本格式.

如果是从数据库读取的话那么把查找的字段稍作修改:

Concat(param," ") as param

 

这样的话输出的excel就是文本格式的了。

但是有个小bug 当打开excel 查看双击单元格查看,然后当这个字段失去焦点的时候,此单元格又变成了科学计数,所以这种修改只是暂时的把输出的内容变成了文本格式,而单元格的格式还是没有被修改,这样做只能解决一时之需,并不是长久之计。

所以还得在代码中加上

$excel->getActiveSheet()->getStyle(\'C\')->getNumberFormat()
  ->setFormatCode(\\PHPExcel_Style_NumberFormat::FORMAT_TEXT);

这段代码的意思是把C列所有的单元格初始化成text文本格式,这里注意我用的Thinkphp版本是3.2以上引入了命名空间所以加上了 "\\" ,有的版本不需要加"\\",视情况而定。

添加以上两段代码

生成excel

右击鼠标设置单元格格式

默认就问文本格式,显示也正确。

大功告成------------------------------------------------------------------------------------------------------------------------------------------------------------

 

以上是关于软件导出数据到excel,数据都变成了科学计数,请问能否将EXCEL的默认数字格式改为数值?的主要内容,如果未能解决你的问题,请参考以下文章

s3db文件用SQLite导出excel文件后长数字变成了科学计数?

java导出CSV 用excel打开 数字过长变成科学计数法

excel 文本转换数字,数字变成科学计数法了,该怎么解决??

关于excel保存为csv格式后,重新打开文本型数字变为科学计数,且15位后面变成0??

Excel身份证号为啥变成了科学计数

phpexcel 导出 科学计数问题