注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

88AVI-WEBZONE8-天空网

是金子总要发光的,但是当满地都是金子的时候,我自己也不知道自己是哪颗了

 
 
 

日志

 
 
关于我

两个人交谈,一个人可以洗耳恭听。但是,三个人则无法互谈这人世最严肃而应深究的事。 我们应该注意自己不用语言去伤害别的同志,但是,当别人用语言来伤害自己的时候,也应该受得起。 要对别人隐瞒我们知识的局限,最可靠的方法就是不要越过那界限。 不登高山,不知天之高也,不临深溪,不知地之厚也。 不飞则已,一飞冲天,不鸣则已,一鸣惊人!!!!!

网易考拉推荐

Excel报表生成  

2008-05-22 10:56:49|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Excel报表生成的方案之 PHPExcel

1、使用PHPExcel的前提条件:
» PHP version 5.2 or newer
» PHP extension php_zip enabled
** 我觉得还应该加一点,放在这边比较明显,那就是还应该打开php_xml模块。

2、安装指南

开源社区利用其它的东西就是比较方便,只需要简单的包含即可。如果你不想每次在包含时写太长的相对路径,那么设置一个PHP的include路径即可:

set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/PHPExcel/');

功能丰富,自然而然API就比较多,我想还是用到什么再查什么吧。

3、对2007 excel的支持是蛮不错的,读写皆可。创建一个Excel 2007文档

/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . ‘../Classes/’);

/** PHPExcel */
include ‘PHPExcel.php’;

/** PHPExcel_Writer_Excel2007 */
include ‘PHPExcel/Writer/Excel2007.php’;

// Create new PHPExcel object
echo date(’H:i:s’) . ” Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();

// Set properties
echo date(’H:i:s’) . ” Set properties\n";
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("Test result file");

// Add some data
echo date(’H:i:s’) . ” Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘Hello’);
$objPHPExcel->getActiveSheet()->setCellValue(’B2′, ‘world!’);
$objPHPExcel->getActiveSheet()->setCellValue(’C1′, ‘Hello’);
$objPHPExcel->getActiveSheet()->setCellValue(’D2′, ‘world!’);

// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle(’Simple’);

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

// Save Excel 2007 file
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace(’.php’, ‘.xlsx’, __FILE__));

4、PHPExcel主要是以 Excel 2007为标准开发的,但它仍然保留了对旧版本的支持 --Excel 5 (BIFF)。

不过它是通过对PEAR的Spreadsheet_Excel_Writer的修改实现的,所以也就差不多了。

创建一个Excel5文档:

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter->save("test.xls");

TBS的Excel plug-in

TBS的确蛮不错的。可惜它的Excel插件不支持所有的Excel功能。虽然能够支持大部分的功能特性,可是不能支持插入的图像。其基本过程是利用Excel对XML的支持来实现,而XML也是个文本文件,这TBS是可以操作的。也算做了解一下吧。

基本过程:

include('tbs_class.php');
$TBS = new clsTinyButStrong;          // 初始化一个TBS实例

include('tbs_plugin_excel.php');
$TBS->PlugIn(TBS_INSTALL,TBS_EXCEL);  // 安装Excel plug-in

$TBS->LoadTemplate('my_template.xml');//打开Excel-XML模板
$TBS->MergeBlock('bz',$my_data);      //填充数据
$TBS->Show()                          // 弹出一个窗口提示用户
Excel报表生成的方案之一 TBS

TBS(TinyButStrong),顾名思义,即小巧但是强大。它是用php实现的一个类,主要功能是实现html代码和php代码的分离。有点类似于模板引擎,或者也可能说是一个简单的模板引擎。说它小是因为这个类才只有8个方法,但是功能却很强大,而且容易上手。

1、简单的使用

  include_once('path_to_tbs/tbs_class_php5.php');
  $TBS =& new clsTinyButStrong ; 

之后你就可以使用这个TBS实例来存储并控制html模板要输出的数据。

2、在html模板方面,没有像其它模板那么复杂,它只有一个新概念TBS tags,而且只包含两种类型:

'fields':用来显示数据,一般对应于TBS实例的一个属性
'blocks':用来定义一个数据区域。一般用来显示数据库的检索结果。

3、实际上,数据的结合过程是用TBS实例控制实现的,其实也就是类似于Flexy的Controller对象。大致过程如下:

include_once('tbs_class_php5.php');
$TBS =& new clsTinyButStrong ;       //初始化一个TBS实例
$TBS->LoadTemplate('template.htm') ; //载入模板

$list = array('X','Y','Z') ;
$TBS->MergeBlock('blk',$list) ;      //结合数据
$TBS->Show() ;


4、简要介绍一下这个类

LoadTemplate()
用以载入一个模板文件,文件的内容保存在TBS实例的source属性中。
$TBS->LoadTemplate(string File{, string HtmlCharSet})
File     文件名
HtmlCharSe 数据结合后html文档所使用的字符集


MergeBlock()
将数据源提供的记录集结合到模板中的数据区域。
int $TBS->MergeBlock(string BlockName, mixed Source{, string Query})
BlockName  用以显示数据的数据区域的名称
Source          数据源
Query           可选参数,对数据源操作的SQL语句
                我想这个函数应该是一个核心。详细的资料在这边不做描述,
                作者的手册写的浅显的不能再浅显了,一句话通谷易懂。
                有空的话在回来补全。

Show()
完成并终止模板与数据的结合。

GetBlockSource()

返回TBS Block的源代码。默认只会返回这个block的第一个section.
如果找不到block,该方法返回false.


string $TBS->GetBlockSource(string BlockName {, boolean Sections}{, boolean DefTags})
BlockName      要寻找的block名称
Sections       可选参数,默认值是false.如果设置为真,那么该方法将返回一个数组,
               包含这个block的所有section.
DefTags        可选参数。默认值是True.默认情况下该方法返回block的源代码包括它的定义标签。
               如果你不想要这些标签,则将这个参数设置为false.

method MergeField()
用固定值或通过调用函数返回值来替换模板中的所有Field。

$TBS->MergeField(string BaseName, mixed X {, boolean FunctionMode}) 


(to be continued)
  评论这张
 
阅读(418)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017