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 fckeditor 调用的函数
Jun 21 PHP
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
将php数组输出html表格的方法
Feb 24 PHP
php cli换行示例
Apr 22 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
php准确计算复活节日期的方法
Apr 18 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 PHP
PHP hex2bin()函数用法讲解
Feb 25 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实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
使用PHP开发留言板功能
2019/11/19 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
Python实现从百度API获取天气的方法
2015/03/11 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
ajax是什么及其工作原理
2012/02/08 面试题
2014年党建工作汇报材料
2014/10/27 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
光荣之路观后感
2015/06/12 职场文书
律师催款函范文
2015/06/24 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python