Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0。
Excel打开csv文件时,只要字段值都是数字,它就认为该字段类型是数值。但我们存放在数据库中的纯数字char有可能会超过15位,这样导出csv文件后,用excel打开看到的字段值就不对了。
网上的解决方法
1、将单元格格式设为文本,但行不通,还是会以科学计数法显示
2、将单元格格式设为特殊,类型邮政编码,这样不会以科学计数法显示,但是数字超过15位时低位还是会变0;
3、新建一个新工作表,用数据导入自文本文件功能,将csv导入到工作表中(分隔符逗号,每一列格式都设为文本),这样可以正确显示,但是每次导出新csv文件都要这么做比较麻烦,而且我们也不可能让客户去进行这个操作。

我在mysql导出csv文件时,设置字段值用制
表符\t括起来(outfile 'e:\\test.csv' fields terminated by ',' optionally
enclosed by '\t' lines terminated by
'\r\n'),这样excel打开csv文件时,会将数值用文本格式显示,而不是数值格式,因为我们的数值前后都有制表符\t,而不是单纯的数字。这样
打开导出的csv文件就可以正常显示了。

$str = "订单号,消费场馆,卡号,流水类型,时间\n";
$str = iconv('utf-8', 'gb2312', $str);
foreach ($rs['list'] as $key=>$value)
{
$record_order_no = iconv('utf-8', 'gb2312', $value['record_order_no']);
$stadium_name = iconv('utf-8', 'gb2312', $value['stadium_name']); //中文转码
$card_num = iconv('utf-8', 'gb2312', $value['card_num']); //中文转码
$record_money_type_str = iconv('utf-8', 'gb2312//IGNORE',$value['record_money_type_str']);
$c_time = iconv('utf-8', 'gb2312', $value['c_time']);
$str .= "\t" . $record_order_no . "\t" . "," .$stadium_name . "," . $card_num . "," . $record_money_type_str . "," . $c_time . "\n"; //用引文逗号分开
}
$name = '/Api/memberRecord/' . "会员卡金额变动记录" . date("Ymd", $start_date) . "-" . date("Ymd", $end_date);
$url = Export::p($str, $name);
$download['url'] = 'Data'.$name.'.csv';

mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法的更多相关文章

  1. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法

    保存在csv中的 013812345678,前面的0会被去掉,后面是科学计数法显示.保存成 col1,="013812345678" 即可. 注意,分隔符逗号后面直接接“=”等号. ...

  2. 导出csv用excel打开后数字不用科学计数法显示(0123456显示123456)

    从这儿抄过来的: http://zhejiangyinghui.iteye.com/blog/1149526 最近写了一个生成csv的程序,生成的csv其中有一列数字长度为13位,csv中查看没有问题 ...

  3. Laravel 使用 maatwebsite/excel 时长数字出现科学计数法的解决办法

    在使用 maatwebsite/excel 包导出Excel的时候,有的单元格里会存放手机号等一大串的数字,这一串数字会被Excel软件处理为科学计数法,在后续处理数据的时候会产生不小的麻烦,一个个去 ...

  4. jsp 页面导出excel时字符串数字变成科学计数法的解决方法

    web导出excel数据格式化 原文地址:http://www.cnblogs.com/myaspnet/archive/2011/05/06/2038490.html   当我们把web页面上的数据 ...

  5. 在把table表格中的数据导出到Excel的时候,以科学计数法显示位数多的数字时怎么解决?

    sbHtml.AppendFormat("<td> {0}</td>", data[i].IDcard.ToString()); sbHtml.Append ...

  6. Gridview数据导出excel时身份证号码为科学计数法的解决方法

    if (e.Row.RowType == DataControlRowType.DataRow) { string id = this.GridView1.DataKeys[e.Row.RowInde ...

  7. python 【pandas】账号、银行卡号、身份证号导出文件后以科学计数法显示问题解决

    问题描述:excel表中的一些数据会以文本格式格式保存,例如一些较长的编号.银行账号.身份证号等,再python中导出文件后,会发现数据以科学计数法显示,影响后续使用. data2_3.to_exce ...

  8. Jmeter、Java当double显示的数字过长时取消科学计数法显示

    今日,由于项目需要,使用Jmeter发送查询账户并不保存余额,经过交易后,进行运算后再次比对余额. 实施过程中获取了余额字段并赋值给一个double变量.变量进行运算后再与交易后的账户余额进行比对.这 ...

  9. Java中怎么把科学计数法显示出全部数字

    如果想去除科学计数法显示可以用如下方法处理: /** * 把科学计数法显示出全部数字 * @param d */ public static String object2Str(Object d) { ...

随机推荐

  1. CentOS6.5下安装Nexus

    一.环境准备 (1) CentOS6.5 (2) nexus-latest-bundle.tar.gz 下载地址:http://www.sonatype.org/nexus/archived/ 二.安 ...

  2. java多线程有几种实现方法?线程之间如何同步

    java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口: 同步的实现方法有五种:1.同步方法:2.同步代码块:3.使用特殊域变量(volatile)实现线程同步:4 ...

  3. lua中table如何安全移除元素

    在Lua中,table如何安全的移除元素这点挺重要,因为如果不小心,会没有正确的移除,造成内存泄漏. 引子 比如有些朋友常常这么做,大家看有啥问题 将test表中的偶数移除掉local test = ...

  4. 7 天玩转 ASP.NET MVC — 第 2 天

    0. 前言 我相信在開始第 2 天的学习时,你已经顺利地完毕了第 1 天的课程. 我们回想一下第 1 天的主要关注点: 为什么选择 ASP.NET MVC ? ASP.NET Webforms 和 A ...

  5. mysql命令收集

    1.显示当前用户的权限

  6. c++ word类型

    word就是16位的数据 随着机器的发展,C++语言本身并没有规定short的位数,不一定是十六位的(随着计算机的发展,可能改变).但word将永远是16位的--机器发展后只需要修改,typedef ...

  7. React中props与state

    以下内容均为个人理解. 1.state: 在react中,state可以看成管理页面状态的集合(实则一个对象而已),库里面的成员均为页面渲染变量,整个页面为一个状态机,当state发生变化时,页面会重 ...

  8. mysql表无权限访问

    当网页出现以上问题时的解决方法: 今天在两台服务器间转移网站,最后把域名解释设置好后等待...然后CMD查看DNS解释情况..解释成功-输入网址-却出现如上信息,首先用#ls -l查看mysql下的v ...

  9. NHibernate连接oracle报错

    NHibernate.Exceptions.GenericADOException:“could not execute query [ select sys_user0_.USERID as USE ...

  10. fildder教程

    转载地址:写得很不错的fildder教程   http://kb.cnblogs.com/page/130367/ Fiddler的基本介绍 Fiddler的官方网站:  www.fiddler2.c ...