>백엔드 개발 >PHP 튜토리얼 >关于PHPEXCEL 求助,懂的大侠帮忙啊

关于PHPEXCEL 求助,懂的大侠帮忙啊

WBOY
WBOY원래의
2016-06-23 14:20:031049검색

PHPEXCEL很强大,但是我找了半天,找不到那种替代输入的函数。 就是比如我在EXCEL模版的任意格子输入{name},输入{age}. 如何把{name}替换成 张三, 把{age}替换成 20 这样的功能的函数有没有?替换好了再另存供用户下载。
(目前我看到的例子,都是要定位D1,A2类似这样的。这个不行呢)
请懂的朋友一定要教我呢, 谢谢了。 


回复讨论(解决方案)

EXCEL 的每一个单元格都是独立的,所以在 PHPEXCEL 中也是这样
出于对减少内存的考虑,PHPEXCEL 并不是将工作表一次性读入内存的,因此通过行列定位单元格是不可避免的

对于你这种填写模板的应用
你只需遍历工作表中的有效区域,对每个模板元素进行替换就可以了

我也遇到了类似的。。http://bbs.csdn.net/topics/390548827
其实这些都是 有条件的设置单元格的格式,
网上有例子,但是一模一样的写到我的代码里就是不好用,
一起等待大神们的指点吧

include 'Plugin/PHPExcel/Classes/PHPExcel/IOFactory.php';class fill_template {  var $startrow = 0;  function __construct($fn) {    $this->tpl = PHPExcel_IOFactory::load($fn);    $this->target = clone $this->tpl;  }  function add_data($ar) {    $sheet = $this->tpl->getActiveSheet();    $i = 0;    $mcol = $sheet->getHighestColumn();    foreach($sheet->getRowDimensions() as $y=>$row) {      for($x='A'; $x<=$mcol; $x++) {        $txt = trim($sheet->getCell($x.$y)->getValue());        if($txt && preg_match('/{(.+)}/', $txt, $match)) {          $txt = isset($ar[$match[1]]) ? iconv('gbk', 'utf-8', $ar[$match[1]]) : '';        }        $h = $y + $this->startrow;        $this->target->getActiveSheet()->getCell("$x$h")->setValue($txt);        $this->target->getActiveSheet()->duplicateStyle($sheet->getStyle("$x$y"), "$x$h");      }    }    foreach($sheet->getMergeCells() as $merge) {      $merge = preg_replace('/\d+/e',"$0+$this->startrow", $merge);      $this->target->getActiveSheet()->mergeCells($merge);    }  }  function output($fn) {    $t = PHPExcel_IOFactory::createWriter($this->target, 'Excel5');    $t->save($fn);  }}$p = new fill_template('tpl02.xls');$p->add_data(array('name' => '张三', 'age' => 20));$p->output('xxx02.xls');

谢谢 xuzuning 斑竹。 CSDN就是强大

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:初学PHP,求教다음 기사:TortoiseSVN更新操作问题