关于PHPEXCEL 求助,懂的大侠帮忙啊PHPEXCEL很强大,但是我找了半天,找不到那种替代输入的函数。 就是比如我在EXCEL模版的任意格子输入{name},输入{age}. 如何把{name}替换成 张三, 把{age}替换成 20 这样的功能的函数有没有?替换好了再另存供用户下载。 (目前我看到的例子,都是要定位D1,A2类似这样的。这个不行呢) 请懂的朋友一定要教我呢, 谢谢了。 分享到: ------解决方案--------------------EXCEL 的每一个单元格都是独立的,所以在 PHPEXCEL 中也是这样 出于对减少内存的考虑,PHPEXCEL 并不是将工作表一次性读入内存的,因此通过行列定位单元格是不可避免的 对于你这种填写模板的应用 你只需遍历工作表中的有效区域,对每个模板元素进行替换就可以了------解决方案--------------------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 $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); 로그인 후 복사