Spreadsheet_Excel_Writer

来源:互联网 发布:远程视频监控软件 编辑:程序博客网 时间:2024/06/06 13:01
关于PEAR类库中用于操作EXCEL的类库Spreadsheet_Excel_Writer

首先安装Spreadsheet_Excel_Writer

仔细看PEAR手册其实:

FileFormats->Spreadsheet_Excel_Writer扩展就只有四个类.

1.Spreadsheet_Excel_Writer类         
2.workbook 类                   //当前EXCEL文件的操作
3.worksheet类                   //负责对工作区的设置
4.format类                        //负责对单元格样试设置

以下就拿PEAR中的一个例子说明,我们常用的用法.
复制内容到剪贴板
代码:
<?php
//引入类文件
require_once 'Spreadsheet/Excel/Writer.php';

//新建一个Spreadsheet_Excel_Writer对象.当你指定了文件件名,他会在当前目录下生民一个XLS文件。
$workbook = new Spreadsheet_Excel_Writer('test.xls');

//创建样试对象,你可以定义多个样试对象并将他们应用到你指定的单元格中.
//你可以设置边框大小,边框颜色,字体大小,颜色等样式,详细请看PEAR手册.
//当然你也可以这样用一句定义

$format_bold =&$workbook->addFormat();
//设置为样试为粗体
$format_bold->setBold();
//同样得到一个样试对象
$format_title =&$workbook->addFormat();
//设置为粗体
$format_title->setBold();
//设置字体色
$format_title->setColor('yellow');
$format_title->setPattern(1);
//设置单元格的前景色
$format_title->setFgColor('blue');

//创建一个工作区对象,添加一个工作区也就是SHEET
$worksheet =&$workbook->addWorksheet();

//设置从0到0列的宽试.这个函数可以设置列的宽度.第一个参数是开始列号,第二个参数是结束列号.第三个参数就是宽度值了.
//本函数还支持一种用法就是$worksheet->setColumn(0,1, 30); 就是第0列和第一列宽度都是30
$worksheet->setColumn(0, 0, 30);

//在第0行0列单元格的内容设置为 "Quarterly Profitsfor Dotcom.Com"并将单元格的样试设置为我们刚刚定义的$format_title
$worksheet->write(0, 0, "Quarterly Profits forDotcom.Com", $format_title);
//以下同理,都是设置单元格的内容,只是坐标和内容不同
$worksheet->writeString(1, 0, "Quarter",$format_bold);
$worksheet->writeString(1, 1, "Profit",$format_bold);
$worksheet->writeString(2, 0, "Q1");
$worksheet->writeNumber(2, 1, 0);//当你写入一个数字类型的变量时最好用writeNumber方法。当然你用write方法同样可以写入。不过由于类型不同在有些EXCEL打开时会提示类型不正确
$worksheet->writeString(3, 0, "Q2");
$worksheet->writeNumber(3, 1, 0);

//最后发送本文件到浏览器
$workbook->send('test.xls');
//关闭
$workbook->close();
?>
这个类还有一个功能很强大的功能就是它还可以输入EXCEL的函数。进行计算。这就给了我们很大的自由
复制内容到剪贴板
代码:
<?php
//同样生成一个对象
$workbook = new Spreadsheet_Excel_Writer('rowcol.xls');
//建立一个工作区
$worksheet1 =&$workbook->addWorksheet("rowcol");
//写入数据
$first = 1;
$last = 10;
for ($i = $first; $i <= $last; $i++) {
   $worksheet1->write($i, 1, $i);
}
//设置要参加计算的两个单元格的位置
$cell1 = Spreadsheet_Excel_Writer::rowcolToCell($first, 1);
$cell2 = Spreadsheet_Excel_Writer::rowcolToCell($last, 1);
//写入最后汇总显示的 total=
$worksheet1->write($last + 1, 0, "Total =");
//写入功式
$worksheet1->writeFormula($last + 1, 1,"=SUM($cell1:$cell2)");

$workbook->close();

?>
体验新版博客