经验共享:PHP操作EXCEL的示例代码,包括生成新文件、新sheet、特别是可以动态生成新的chart

rocsoar 2003-05-30 04:14:31
<?php
#新建一个COM对象。
$exapp = new COM("Excel.application") or Die ("Did not connect");#我试过用这个方法打开一个已有的excel文档是不行的,我是office97,office2k下行不行,我没试。office97下可以用 $exapp = new COM("Excel.sheet") or Die ("Did not connect");这种方式来打开一个已有的excel文件进行操作,但这个方法有bug.具体自己去试吧。
$exapp->SheetsInNewWorkbook = 1;#设定新建的workbook只有一个sheet
$exapp->Application->Visible = 1;#设定新建的workbook可见,不知为何,我的总是不可见。
$exapp->DisplayAlerts = True;#不显示警告提示
$wkb=$exapp->Workbooks->add();#新添加一个workbook
$sheets = $wkb->Worksheets(1);#取得sheet对象
$sheets->activate;
$sheets->name="InterDailyUsage";#设置sheet的名称

$maxi=20;
#开始填充sheet里的每个cell.
for ($i=1;$i<$maxi;$i++) {
$cell = $sheets->Cells($i,1);
$cell->activate;
$cell->value = $i*$i;
$cell = $sheets->Cells($i,2);
$cell->activate;
$cell->value = $i*$i*2;
$cell = $sheets->Cells($i,3);
$cell->activate;
$cell->value = $i*$i*3;
}
#取三个常量为下面的chart中的series命名作准备
$ce = $sheets->Cells(1,1);
$s1 = $ce->value;
$ce = $sheets->Cells(1,2);
$s2 = $ce->value;
$ce = $sheets->Cells(1,3);
$s3 = $ce->value;
#新建一个chart对象
$co = $wkb->Charts->Add();
$co->name = "Daily SMS Usage";#设置chart的名称
$co->activate;
$co->ChartType=65;
#设置chart的标题
$co->HasTitle = True;
$co->ChartTitle->Text = "Daily SMS Usage";
#为chart添加数据源
$selected = $sheets->range("B1:B$maxi,C10:C$maxi");
$co->setsourcedata($selected,2);#2表示以xlColomns形式表示
/*
#以新添加的方式添加series
$ser = $co->SeriesCollection(0);
$ser->delete;#奇怪,这里老是删除不掉,懒得再试了。
$selected = $sheets->range("B1:B$maxi");
$ser = $co->SeriesCollection->NewSeries();
$ser->name = $s1;
$ser->values = $selected;
$selected = $sheets->range("C1:C$maxi");
$ser = $co->SeriesCollection->NewSeries();
$ser->name = $s2;
$ser->values = $selected;
*/
$ser = $co->SeriesCollection(1);
$ser->name = $s1;
$ser = $co->SeriesCollection(2);
$ser->name = $s2;
#$ser = $co->SeriesCollection(3);
#$ser->name = $s3;
#为X轴添加数据源
$selected = $sheets->range("A1:A$maxi");
$ax = $co->Axes(1);
$ax->CategoryNames = $selected;
#保存成文件。
$f = getcwd();
$file_name=$f."\\test4.xls";
if (file_exists($file_name)) {unlink($file_name);}
#echo $file_name;
$wkb->SaveAs($file_name); # saves sheet as final.xls

$exapp->Quit();
unset($exapp);
#header("Content-type:application/vnd.ms-excel");
#header("Content-Disposition: attachment; filename=test4.xls");
#header("Location:test4.xls");
?>

另外问各位一下:到了最后,我要转到另外一页,把生成的excel文件显示出来,应该用何语句啊?
...全文
290 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧