PHP Smarty生成EXCEL文档的代码

  不过,跟据我的试验,如果你不删除一个地方,生成的文档用 excel 打开,是会报错的!

  删除所有像这样的串: ss:ExpandedColumnCount="5" 就行了!

  示例:

  随便填点数据,然后提交,会生成一份 xls 文件。

  还有一个小问题没有找出来,这个模板,只能有两笔数据,多了也不行,晕,还没有找到要修改哪里呢。

  另外,我开始是把 formValidate.php 和 report.php合在一起写的,结果是没有结果!

  分开写,就有结果了!

  report.php

  

复制代码 代码如下:

  <?php

  include '../common.inc.php';

  $token = $_POST['token'];

  if(GToken::isToken($token,'REPORT')){

  $names = $_POST['name'];

  $birthdays = $_POST['birthday'];

  $phones = $_POST['phone'];

  $sexs = $_POST['sex'];

  $emails = $_POST['email'];

  $scoreAs = $_POST['scoreA'];

  $scoreBs = $_POST['scoreB'];

  $scoreCs = $_POST['scoreC'];

  $list = array();

  $score = array();

  for($i=0;$i<sizeof($names);$i++){

  $arr = array(

  'name' => $names[$i],

  'sexs' => $sexs[$i],

  'birthday' => $birthdays[$i],

  'email' => $emails[$i],

  'phone' => $phones[$i]

  );

  array_push($list,$arr);

  unset($arr);

  $arr = array(

  'name' => $names[$i],

  'scoreA' => $scoreAs[$i],

  'scoreB' => $scoreBs[$i],

  'scoreC' => $scoreCs[$i]

  );

  array_push($score,$arr);

  unset($arr);

  }

  include '../lib/smarty/Smarty.class.php';

  $gmt = GSmarty::getInstance('test');

  $gmt->assign_by_ref("list",$list);

  $gmt->assign_by_ref('score',$score);

  header("Cache-Control: public");

  header('content-type:application/vnd.ms-excel');

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

  $gmt->display('report');

  }

  ?>

  header("Cache-Control: public");

  这一定要加,不然的话,在IE下会发生错误。