mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法
2016-03-23 17:48
1856 查看
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文件就可以正常显示了。
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 timestamp 值不合法问题
- mysql timestamp 值不合法问题
- mysql timestamp 值不合法问题
- mysql报错问题解决Character set 'utf8mb4' is not a compiled character set
- mysql查询当天所有数据sql语句、查询数据表中的记录
- MySQL查询数据表中数据记录(包括多表查询)
- MySQL性能优化的最佳20+条经验
- MySQL实现大整数相加的udf
- 查看mysql 存储引擎
- MySQL二级等级考试归纳——高级指令(上)
- MySQL--存储引擎
- MySQL Replication, 主从和双主配置
- mysql 主主互备
- #Mysql 定时备份计划
- Windows修改MySQL用户root密码
- mysql max_allowed_packet 自动恢复成1024 问题
- 一.mysql的安装
- MySQL备份之mysqlpump工具备份故障一则案例分享
- 窥探mysql存储过程细节
- MySQL Forcing InnoDB Recovery