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 相关文章推荐
一个域名查询的程序
Oct 09 PHP
php 团购折扣计算公式
Nov 24 PHP
基于Zend的Config机制的应用分析
May 02 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
PHP中feof()函数实例测试
Aug 23 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
js实现内置计时器
2019/12/16 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python运用于数据分析的简单教程
2015/03/27 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
python计算列表内各元素的个数实例
2018/06/29 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
教师自我反思材料
2014/02/14 职场文书
班级年度安全计划书
2014/05/01 职场文书
群教个人对照检查材料
2014/08/20 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
python基础之爬虫入门
2021/05/10 Python