php中导出数据到excel时数字变为科学计数的解决方法


Posted in PHP onFebruary 03, 2013

在数据导出到excel时数字格式不对,一般分为以下两种情况。

1、excel单元格设置长度不够

解决方法:

//在excel.php文件中 
$objActSheet = $objPHPExcel->getActiveSheet(); 
// 设置 栏目名称 
$objActSheet->setCellValue("b1", "卡号"); 
// 设置列的宽度 
$objActSheet->getColumnDimension('b')->setWidth(20);//改变此处设置的长度数值

2、字符被excel理解成数字了,一般就是把那个字段设置成文本 或者想办法加入一些空格一类的。
解决方法:

//添加数据处,主要是把要显示数据以chunk_split()函数处理以下,此函数的具体用法可以自己查看 
$objActSheet->setCellValue ( "b$i", chunk_split("123456789 ",4," ") );//当然,如果不想让用户看到数字间有空格,那就把要分割的字段值设大一些,如例子中的4设为大于等于9的即可。

我导出EXcel的主要代码的前面部分:

<? 
if(count($data)>40000){ 
$filename_type='csv'; 
}else{ 
$filename_type='xls'; 
} 
header("Content-Type: application/vnd.ms-excel"); 
Header("Accept-Ranges:bytes"); 
Header("Content-Disposition:attachment;filename=".$filename.".".$filename_type); //$filename导出的文件名 
header("Pragma: no-cache"); 
header("Expires: 0"); 
if($filename_type=='xls'){ 
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns="http://www.w3.org/TR/REC-html40"> 
<head> 
<meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT"> 
<meta http-equiv=Content-Type content="text/html; charset=gb2312"> 
<!--[if gte mso 9]><xml> 
<x:ExcelWorkbook> 
<x:ExcelWorksheets> 
<x:ExcelWorksheet> 
<x:Name></x:Name> 
<x:WorksheetOptions> 
<x:DisplayGridlines/> 
</x:WorksheetOptions> 
</x:ExcelWorksheet> 
</x:ExcelWorksheets> 
</x:ExcelWorkbook> 
</xml><![endif]--> </head>'; 
}

后面就是以<table><tr><td></td></tr></table>的格式输出数据

查了大半天终于查到了一点有用的资料,现在摘抄如下:

“首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式:
1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 数字:vnd.ms-excel.numberformat:#,##0.00
4) 货币:vnd.ms-excel.numberformat:¥#,##0.00
5) 百分比:vnd.ms-excel.numberformat: #0.00%
这些格式你也可以自定义,比如年月你可以定义为:yy-mm等等。那么知道了这些格式,怎么去把这些格式添加到cell中呢?很简单,我们只需要把样式添加到对应的标签对(即闭合标签)即可。如<td></td>,给标签对<td></td>添加样式,如下: <td style="vnd.ms-excel.numberformat:@">410522198402161833</td>
同样,我们也可以给<div></div>添加样式,也可以给<tr></tr>,<table></table>添加样式;当我们在父标签对和子标签对都添加样式时,数据会以哪一个样式呈现呢?经过测试,会以离数据最近的样式呈现.

PHP 相关文章推荐
第五节--克隆
Nov 16 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
PHP中new static()与new self()的区别异同分析
Aug 22 PHP
跟我学Laravel之配置Laravel
Oct 15 PHP
Windows7下的php环境配置教程
Feb 28 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 PHP
php中删除字符串中最先出现某个字符的实现代码
Feb 03 #PHP
php数组去重的函数代码
Feb 03 #PHP
php中使用临时表查询数据的一个例子
Feb 03 #PHP
PHP应用JSON技巧讲解
Feb 03 #PHP
set_include_path和get_include_path使用及注意事项
Feb 02 #PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 #PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 #PHP
You might like
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
一个符号插入器 中用到的js代码
2007/09/04 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
javascript实现动态标签云
2015/10/16 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
我的动漫时代的创业计划书范文
2014/01/27 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
电子专业求职信
2014/06/19 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
工作感想范文
2015/08/07 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
2019学生会干事辞职信
2019/06/27 职场文书