php导出CSV方法 (转)

 更新时间:2016年11月25日 16:09  点击:1475
 

制作网站时,经常会遇到检索数据列表的情况。通常用户希望下载这些列表数据并存储到客户端。当然下载这些数据的时候是需要固定的格式,以便于用Excel等软件阅览。说的简单一些就是CSV/Excel数据导出 。

注意事项:

输出文档的基本格式为:列1,列2,列3,……,列nn

格式化数据的同时要对特殊的字符进行过滤。譬如“,”如果不转换为全角“,”会导致数据格式的混乱。

实现方法:

举例:检索数据库表,将结果保存为字符串,进行格式和特殊字符的过滤后,导出到客户端的CSV文件。 

OrderSearchEdit_saveCSV.php



<?php
include($_SERVER[''DOCUMENT_ROOT''. "/ftcart/OrderInfoManager.class.php");
include($_SERVER[''DOCUMENT_ROOT''. "/ftcart/CommonUtil.php");
include($_SERVER[''DOCUMENT_ROOT''. "/ftcart/CommonConst.php");
include($_SERVER[''DOCUMENT_ROOT''. "/ftcart/CommonErrorMsg.php");
include($_SERVER[''DOCUMENT_ROOT''. "/webadmin.php");

$searchcase = new OrderInfoManager();
$nowTime = microtime_float();
$searchcase = unserialize($_SESSION["ORDER_SEARCH_CASE"]);
$listcsv = $searchcase->doCSV();// 调用doCSV()方法
$filename = $nowTime;
//$filename = str_replace(":","",$nowTime);
//$filename = trim($filename);
//echo $filename;

header("Content-Disposition: attachment; filename=".$filename.".csv");
header(''Content-Type:APPLICATION/OCTET-STREAM'');
echo "注文No.,注文日,氏名,住所,支


  说起PHP近几年的发展,可以说是突飞猛进。EDC在2006年的统计信息表明PHP已经跻身全球三个编程语言的行列,并且其是以Web脚本语言的身份参与竞争的。其它两个语言(Java和.net)都是通用的语言(可以开发多种应用)。但是,令人难以置信的是,PHP目前的发展速度是37%明显高于其它两种语言。

  同时在国内,PHP的发展也非常迅速。目前在各大网站云集的北京,PHP几乎是无处不在。百度、新浪、搜狐、TOM等等各大互联网门户都在广泛使用这PHP。同时,近两年来北京多处许多小型的门户站点,也是大部分使用了PHP的技术。就连PHP的工程师需求量都发幅度提高。PHP在国内的官方PHPChina.com网站透露,目前的在京PHP工程师的待遇的平均值可以比ASP工程师的高出一倍。

  那么,为什么PHP可以在近年来发展如此迅速呢。其实跟Web的迅猛发展是紧密联系在一起的。另外,LAMP的迅速发展使得PHP的应用也更加广泛了。那么这里我就Web迅猛发展这个大的环境,和大家下为什么PHP能在把握住这个机会,一举成功。

  总结起来,PHP能发展起来有三个原因:

  ·基于Web量身定制,Web语言的首选,LAMP架构安全稳定

  ·简单,开发快速,扩展性强

  ·PHP企业级应用的发展

  基于Web量身定制,Web语言的首选,安全稳定

  在参加今年的LAMP大会的时候,我看到了PHP的创始人之一,Zeev Suraski。也听取了他在为我们做的PHP的整体介绍的报告。在听他讲当初开发PHP的初衷的时候他说到,他和Andi就是需要一个非常适合于Web 的语言来编写一个课题,于是他们就找到了最好的PHP/HI。在他们完成项目的同时,他们发现PHP/HI非常有技术前景,于是他们就加入了PHP的研发,后来又一起开发了Zend Engine,并免费嵌入到PHP当中,发布了PHP4从而让PHP真正发展起来。

  我们可以发现,再后来PHP一些列的版本升级中,PHP一直围绕着Web来增加它的特性,这点对于准备长期使用PHP来作为网站的技术承载平台的公司来说是非常合适的。关于这点Zeev本人也表示在PHP5确定版本的时候不得不把一些很不错的功能去掉,就是为了延续PHP的稳定的特点。

  曾经听一个网站的技术经理说过:“如果做软件,如果要做网站就用PHP!”。当时我们都以为这个是一个笑谈,现在想起来还真是这样。目前,许多的网站项目的负责人都很信任PHP。觉得PHP在支持Web方面非常到位。

  关于PHP应用的安全,则得益于PHP是开源的。在PHP社区有500多个PHP编写工程师在支持着PHP,源代码的公布为它赢得广泛的支持。当然,在讲到PHP的安全性的时候,不能不提到LAMP架构。基于LAMP平台的稳定性从它在国内各大网站的服务器的使用量就可以得以证明。

  简单,开发快速,扩展性强

  2006LAMP大会的时候,我发现Zeev在谈到PHP的特性的时候第一个就谈到使用简单。而且强调了这就是PHP能够成功的原因。而且 Zeev也强掉了PHP将保持简单的风格,以便用户可以方便快捷地开发PHP应用程序。据说,美国上次受的飓风袭击的时候,特意为此搭建的网站就是用 PHP的,一共才用了3天。虽然这个时间看上去很短,但是经过我们仔细分析以后,也是有可能的。

  我个人认为不单单是国外,国内也是这样的。个人认为,简单带来的好处就是企业的快速成长的必备条件。用PHP来做Web站点可以在非常短的时间内搭建起一个小规模的网站。因此造就了大批的“个人站长”。同时,在国内也诞生了不少以PHP

  另外,PHP的扩展性也非常好,如果用PHP开发产品的话,可以非常快地根据客户的需求进行定制。而且在PHP广泛的社区里面,可以为PHP的开发工程师提供大量的资源支持。PHP的开发工程师可以很快地获取他所需要的项目、方案或者具体的功能代码。在这点上,许多建站的产品的推广企业也有很深的感受。例如,论坛、CMS还有在线购物等等。

  PHP企业级应用的发展

  众所周知,PHP历来被认为是草根阶层的变成语言。因此困扰PHP发展的很大因素就是大企业的认可。政府、大企业等PHP项目的增加在近几年的表现也是很突出的,这点可能在国外比较明显,它大幅度地提高了大家在选择PHP时候的信心。

  从这两年全球的PHP年会来看,许多的大厂商都开始纷纷关注PHP,参加年会。甚至于像IBM、Oracle等公司直接与Zend公司进行合作,推广并提高PHP在大型项目里面的功能。IBM公司本身也来大量采用PHP来实现它的项目。

  此外,直接一提的是,大型的项目考虑开源的LAMP架构的时候会很看重是否可以获得一些技术支持。而关于PHP的技术支持,还是应该关注它的创始公司Zend 技术公司。Zend公司确实在把PHP推向企业级应用方面做了许多工作。


当表单按提交后经过浏览器初步处理之后,传到php表单处理页面。
    一般的书上都讲的要么是自动为表单元素分配变量;要么就是将提交的数据保存在全局数组中,然后调用系统特定的自动全局变量数组来获取这些值。看了很久没有明白php到底是如何和浏览器进行信息沟通的,也就是B(客户端)发送数据,到S(服务器)的php表单处理页面,接着就产生相应的变量,这中间php工作机理,哪位老大清楚啊!一直没有明白!

近日对PHP产生了浓厚的兴趣,遂决定学习一下。首先是安装。

第一步,安装Apache

        从apache下载Apache2.2安装包,安装,运行,浏览器输入地址127.0.0.1:8080,出现“It Works!”,安装成功。

第二步,安装PHP5

         从cn2.php.net下载windows安装包,运行安装,看到选择扩展的界面,想当然的全部选择,安装OK。再运行Apache,报错,缺少DLL,不能启动PHP。看来扩展不是随便选择的,再次运行安装程序,取消所有扩展,再次运行Apache,OK。写一个页面,加入<?php phpinfo(); ?>,浏览器打开,It‘s OK。

        安装phpmyadmin吧,google了一个安装包下载,解压到apache htdocs目录,运行,提示没有安装MySQL扩展,Easy,再度运行安装程序,修改安装选项,加上MySQL扩展,然后再度运行phpmyadmin,还是提示没有MySQL扩展。嗯,没有任何事情是简单的。

        查看PHP文档,说最好的安装方式是手动安装,怀疑是安装包的问题,卸载,下载PHP手动安装包,解压,按照文档说明,在httpd.conf中加入
                         # 配置 php.ini 的路径
                         PHPIniDir "C:/php5/"

                         # 对 PHP 5 用这两行:
                         LoadModule php5_module "c:/php5/php5apache2_2.dll"
                         AddType application/x-httpd-php .php
,然后复制php.ini-dist为php.ini,去掉GD2,MySQL扩展前面的分号,启动apache,运行phpmyadmin,还是提示没有MySQL扩展。仔细检查安装过程,C:/PHP5加到了环境变量Path中,php.ini中extension_path也更改了,httpd.conf中也加入了PHPIniDir,C:/PHP5/中也确实存在libmysql.dll文件,完全符合文档的描述,也没有什么疏漏,就是找不到。崩溃ing

        参绕了好几天,google无数次,也没有搞定,后来病急乱投医,将libmysql.dll拷贝到Windowssystem32下面,MySQL扩展安装成功。晕倒,文档中说不建议拷贝php5ts.dll 到系统目录,将PHP目录加到PATH 环境变量就可以找到DLL,看来只是能找到php5ts.dll,找不到扩展所需的DLL?

三、搭建开发环境

        我的首选当然是Eclipse了,下载PDT,代码提示、自动完成没什么问题,试一试Debug能力吧,打开Eclipse的帮助,找到PDT Debug一节,按照帮助提示试了试调试功能,




PHP的优点:

  1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux/Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换PostgreSQL或者Oracle,支持N种数据库。(N >= 10)

  2. 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。

  3. 目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。

  4. 有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。

  5. 有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。

  6. PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。

  7. 有成熟的社区来支持PHP的开发,比如国内的CSDN,喜悦国际村等等。

  8. 目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。

  PHP的缺点:

  1. 代码重用率有待提高,当然,这个跟面向对象有关系。其实PHP 5已经比较适意了。

  2. PHP程序员较少 (这个算php的缺点嘛,呵呵~)

<
[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
  • js控制页面控件隐藏显示的两种方法介绍

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • C#方法的总结详解

    本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04