20,398
社区成员




include 'PHPExcel/Classes/PHPExcel/IOFactory.php';
class fill_template {
var $startrow = 0;
function __construct($fn) {
$this->tpl = PHPExcel_IOFactory::load($fn);
}
function add_data($ar) {
$ar = array_values($ar);
if(!isset($this->target)) $this->target = clone $this->tpl;
$sheet = $this->tpl->getActiveSheet();
$i = 0;
foreach($sheet->getRowDimensions() as $y=>$row) {
foreach($sheet->getColumnDimensions($row) as $x=>$col) {
$txt = trim($sheet->getCell($x.$y)->getValue());
if($txt && $txt{0} == '#') $txt = isset($ar[$i]) ? $ar[$i++] : '';
$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);
}
$this->startrow += $sheet->getHighestRow() + 3;//多加3行便于裁剪
}
function output($fn) {
$t = PHPExcel_IOFactory::createWriter($this->target, 'Excel5');
$t->save($fn);
}
}
用法$p = new fill_template('tpl.xls');//实例化并加载模板xls
$p->add_data(array(1,2,3,4,5,6,7,8,9));//数据要按模板中“#”出现的次序排列
$p->add_data(array(1,2,3,4,5,6,7,8,9, 'a汉字'));//汉字要用utf-8的
$p->add_data(array(1,2,3,4,5,6,7,8,9));
$p->output('xxx.xls');//输出到文件
require 'PHPExcel.php';
$excel = new Spreadsheet_Excel_Reader();
$excel->read("a.xls");//读取的xls文件
$key=array();
for ($i = 1; $i <= $excel->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $excel->sheets[0]['numCols']; $j++) {
//显示每个单元格内容
if(isset($excel->sheets[0]['cells'][$i][$j])) {
$key[]=$excel->sheets[0]['cells'][$i][$j]."\r\n";
}
}
}
$b='b.xls';//写入到xls文件
$h=fopen($b,'a');
foreach($key as $val){
$str.=$val;
}
for($i=0;$i<10;$i++){//复制的次数
fwrite($h,$str);
}
fclose($h);