PHPWord(http://phpword.codeplex.com/)是一个很好处理和生成WORD文档的工具,但是生成复杂的word,如colspan和rowspan的实现,还是需要你做些修改。
第一步:在phpword/Style/Cell.php文件类中添加如下属性:
private $_gridSpan;// for the colspan private $_vMerge;// for the rowspan
第二步:在phpword/Style/Cell.php文件类中添加如下方法:
public function setGridSpan($pValue = null) { $this->_gridSpan = $pValue; } public function getGridSpan() { return $this->_gridSpan; } public function setVMerge($pValue = null) { $this->_vMerge = $pValue; } public function getVMerge() { return $this->_vMerge; }
第三步:在phpword/Style/Cell.php文件类构造函数__construct()中添加如下:
$this->_gridSpan=null; $this->_vMerge=null;
第四步:在phpword/writer/word2007/base.php类的_writeCellStyle方法中添加:
$gridSpan = $style->getGridSpan(); if(!is_null($gridSpan)) { $objWriter->startElement('w:gridSpan'); $objWriter->writeAttribute('w:val', $gridSpan); $objWriter->endElement(); } /** edited by www.phpddt.com */ $vMerge = $style->getVMerge(); if(!is_null($vMerge)) { $objWriter->startElement('w:vMerge'); $objWriter->writeAttribute('w:val', $vMerge); $objWriter->endElement(); }
OK,恭喜你,搞定了,然后看看怎么使用吧!
PHPWord rowspan的使用:
$table = $section->addTable(); $table->addRow(); $table->addCell(100,array('vMerge' => 'restart'))->addText('1'); $table->addCell(100)->addText('2'); $table->addRow(); $table->addCell(100,array('vMerge' => 'fusion')); $table->addCell(100)->addText('3');
生成的word效果如下截图:
PHPWord colspan的使用:
$table->addRow(); $styleCell=array('gridSpan' => 2); $table->addCell(200, $styleCell)->addText('PHP点点通'); $table->addCell(100)->addText('http://www.phpddt.com'); $table->addRow(); $table->addCell(100)->addText('PHP'); $table->addCell(100)->addText('python'); $table->addCell(100)->addText('java'); $section->addTextBreak(10);
生成word效果图如下: