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 相关文章推荐
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
php创建多级目录代码
Jun 05 PHP
php 获取完整url地址
Dec 20 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
利用PHP判断文件是否为图片的方法总结
Jan 06 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP堆栈调试操作简单示例
Jun 15 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 smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
python一键升级所有pip package的方法
2017/01/16 Python
python实现画一颗树和一片森林
2018/06/25 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
护理专业的自荐信
2013/10/22 职场文书
借款担保书范文
2014/05/13 职场文书
化学工程专业求职信
2014/08/10 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
科普 | 业余无线电知识-波段篇
2022/02/18 无线电