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 相关文章推荐
ie6 动态缩略图不显示的原因
Jun 21 PHP
PHP 一个比较完善的简单文件上传
Mar 25 PHP
php Notice: Undefined index 错误提示解决方法
Aug 29 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
深入PHP curl参数的详解
Jun 17 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
PHP日志LOG类定义与用法示例
Sep 06 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
node 版本切换的实现
2020/02/02 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
python 实现汉诺塔游戏
2020/11/28 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
九州传奇上机题
2014/07/10 面试题
介绍一些UNIX常用简单命令
2014/11/11 面试题
思想品德自我评价
2014/02/04 职场文书
产品质量保证书
2014/04/29 职场文书
建筑学专业自荐书
2014/07/09 职场文书
付款委托书范本
2014/10/05 职场文书
报到证办理个人委托书
2014/10/06 职场文书
小学班主任事迹材料
2014/12/17 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
清明节随笔
2015/08/15 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
总结Python变量的相关知识
2021/06/28 Python