php导出excel长数字显示成科学计数法格式的解决方案

简介:

php导出excel长数字显示成科学计数法格式的解决方案

首先,我们了解一下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>添加样式,如下:

 
  1. <tdstyle="vnd.ms-excel.numberformat:@">410522198402161833</td>


同样,我们也可以给<div></div>添加样式,也可以给<tr></tr>,<table></table>添加样式,这样就会引入一个问题,你注意到了吗?先看如下的代码:


 
  1. <tablestyle=’vnd.ms-excel.numberformat:#,##0.00’>

  2. <tr>

  3. <td>542</td>

  4. <tdstyle=’vnd.ms-excel.numberformat: #0.00%’>0.25</td>

  5. </tr>

  6. </table>


当我们在父标签对和子标签对都添加样式时,数据会以哪一个样式呈现呢?经过测试,会以离数据最近的样式呈现,这也是符合我们的意愿的(好像也符合一句俗话:县官不如现管)。这样我们就可以通过改变样式而改变数据在excel中呈现的方式(这些样式规格你可以在前台页面上添加也可以在后台代码里给相应的控件如:DataGrid等添加这些样式)。如果你的应用比较简单,那么这已经足够满足你的需求。但如果你的应用比较复杂,那么你也可以采取一种方式来达到不同的数据呈现效果。下面,我就举一个稍微复杂一点的应用。

      例如:你的数据要呈现给不同国家和地区的用户查看,这样数据的呈现的格式就会不一样,那么我们怎么解决这个问题呢?当然了,你可以手工把这些数据处理好,但这毕竟不是最好的方法,因为如果我们每增加一个其他国家或地区的用户,那么我们就需要把所有的数据以客户要求的格式处理一遍,当数据量很大时,这无疑是一件很沉重且无聊的工作。那么我们究竟应该怎样解决类似这样的问题呢?下面我说一下,我自己的看法:把这些格式化的信息抽取到一个xml文件中,程序运行时根据不同的客户读取不同的格式化信息,然后把这些格式化信息动态的添加到我们的数据上,这样,当我们每增加一个其他国家或地区的用户时,我们只需要多增加一个xml文件,把对应的格式化信息写入这个xml文件,然后当这个国家或地区的用户查看时,就把对应的格式化信息读取出来应用到数据上即可。

php导出excel实例如下:

 
  1. <meta http-equiv="Content-Type" content="text/html; charset=GBK" />

  2. <?php

  3. header('Content-Type:application/vnd.ms-excel;charset=gbk');    

  4. header("Content-Disposition:attachment;filename=coupon_all.xls");

  5. $tx='<span style="font-weight:bold;color:#ff0000;font-size:15px;">列表</span>';

  6. echo$tx."\n\n";  

  7. echo"<table border=1 width=1002 style='text-align:center'>";

  8. echo"\n";

  9. echo"<tr>";

  10. echo"<td></td>"."\t";

  11. echo"</tr>";

  12. echo"\n";

  13. echo"<tr style='background:#DDECE9;font-weight:bold;'>";

  14. echo"<td>序号</td>"."\t";

  15. echo"<td>账号</td>"."\t";

  16. echo"<td>真实姓名</td>"."\t";  

  17. echo"<td>单位</td>"."\t";

  18. echo"<td>身份证号</td>"."\t";

  19. echo"<td>省份</td>"."\t";

  20. echo"<td>城市</td>"."\t";

  21. echo"<td>手机</td>"."\t";

  22. echo"<td>QQ</td>"."\t";

  23. echo"<td>申请时间</td>"."\t";

  24. echo"<td>备注</td>"."\t";

  25. echo"\n";

  26. echo"</tr>";

  27. include('../conn.php');  

  28. $sql="select * from `chit` order by `createtime` desc;";

  29. $query=mysql_query($sql,$conn);

  30. $i=1;

  31. while($row=mysql_fetch_array($query)){

  32. echo"\n";

  33. if($row['is_verify']=='-1'){

  34. echo"<tr style='background:#FF8080'>";

  35.    }

  36. elseif($row['is_verify']=='1'){

  37. echo"<tr style='background:#D0E8FF'>";

  38.    }

  39. else{

  40. echo"<tr>";

  41.    }

  42. echo"<td>".$i++."</td>"."\t";

  43. echo"<td>".$row['username']."</td>"."\t";

  44. echo"<td>".$row['realname']."</td>"."\t";

  45. echo"<td>".$row['danweiname']."</td>"."\t";

  46. echo"<td style='vnd.ms-excel.numberformat:@'>".$row['idcard']."</td>"."\t";

  47. echo"<td>".$row['province']."</td>"."\t";

  48. echo"<td>".$row['city']."</td>"."\t";

  49. echo"<td>".$row['phone']."</td>"."\t";

  50. echo"<td>".$row['qq']."</td>"."\t";

  51. echo"<td>".date("Y-m-d H:i:s",$row['createtime'])."</td>"."\t";

  52. echo"<td>".$row['verify_content']."</td>"."\t";

  53. echo"</tr>";

  54. echo"\n";

  55. }

  56. echo"</table>";

  57. ?>




      本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1108208,如需转载请自行联系原作者






相关文章
|
6月前
|
PHP 开发者
PHP数据验证方法:如何检查一个字符串是否是email格式。
以上就是关于PHP如何检查一个字符串是否是email格式的全部内容。希望你在代码书写旅途中,能找到你的北斗星——简洁、高效、可靠的代码验证方式。让我们共同见证PHP的强大和丰富多彩!
171 16
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
SQL 存储 安全
PHP 与现代 Web 应用的安全挑战与解决方案
随着 Web 应用的发展,PHP 作为一种广泛使用的服务器端脚本语言,面临着越来越复杂的安全挑战。本文探讨了当前 PHP 开发中常见的安全问题,并提供了相应的解决方案,帮助开发者构建更安全可靠的 Web 应用。 【7月更文挑战第8天】
160 1
|
10月前
|
数据处理
Excel VBA 自动填充空白并合并相同值的解决方案
在Excel中,常需将一列数据中的空白单元格用上方最近的非空值填充,并合并连续相同值。本VBA宏方案自动完成此操作,包含代码实现、使用方法及注意事项。通过简单步骤添加宏,一键处理数据,提升效率,确保准确性。适用于频繁处理类似数据的用户。
325 7
|
11月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
213 5
|
11月前
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
849 3
|
11月前
|
Java API Apache
|
PHP
在 PHP 中将 WebP 转换为 GIF 图像格式
【8月更文挑战第27天】
207 2
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
191 0

热门文章

最新文章