关于PHPEXCEL 求助,懂的大侠帮忙啊 PHPEXCEL很强大,但是我找了半天,找不到那种替代输入的函数。 就是比如我在EXCEL模版的任意格子输入{name},输入{age}. 如何把{name}替换成 张三, 把{age}替换成 20 这样的功能的函数有没有?替换好了再另存供用户下载。(目前我看到的例子,都是要定位D1,A2类似这样的。这个不行呢)请懂的朋友一定要教我呢, 谢谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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就是强大 用xmapp配置的apache+mysql+php5的环境,本地机子上可以访问,局域网里其他机子却访问不了 memcache ,如果有数据库表,字段名等。。也有网站的前台源码。 FCKeditor 工具栏配置,感觉有点麻烦。 请推荐几个php现在使用最多,架构也不错的免费的CMS和论坛 用UFT-8的网站,看源文件,都是繁体字,正常吗? 使用php将word等office文件转换为pdf格式 if(date("His",$now) >= 235800)看看这么会由问题吗? CI框架,分页类 数组添加至数据库 Moodle theme 问题 学习php,就是这么给力
出于对减少内存的考虑,PHPEXCEL 并不是将工作表一次性读入内存的,因此通过行列定位单元格是不可避免的对于你这种填写模板的应用
你只需遍历工作表中的有效区域,对每个模板元素进行替换就可以了
其实这些都是 有条件的设置单元格的格式,
网上有例子,但是一模一样的写到我的代码里就是不好用,
一起等待大神们的指点吧
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');