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 相关文章推荐
php中文本操作的类
Mar 17 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
php中关于换行的实例写法
Sep 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
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
JS代码放在head和body中的区别分析
2011/12/01 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
python encode和decode的妙用
2009/09/02 Python
python封装对象实现时间效果
2020/04/23 Python
浅析Python编写函数装饰器
2016/03/18 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
python中subprocess批量执行linux命令
2018/04/27 Python
python实发邮件实例详解
2019/11/11 Python
Python3获取cookie常用三种方案
2020/10/05 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
金鑫耀Java笔试题
2014/09/06 面试题
就业推荐表自我鉴定范文
2014/03/21 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
员工试用期工作总结
2019/06/20 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL