2013-03-21 38 views
4
$PHPWord = new PHPWord(); 
$section = $PHPWord->createSection(); 
$table = $section->addTable(); 
$i = 1; 

$document = $PHPWord->loadTemplate('/var/sitLims/web/uploads/lmsSyllabus/lmsSyllabus.docx'); 
$document->setValue('Value1', $course_number); 
$document->setValue('Value2', $course_name); 
$document->setValue('Value3', $course_en_name); 
$document->setValue('Value4', $course_summary); 
$document->setValue('Value5', $course_purposes); 
$document->setValue('Value6', $course_content); 
$document->setValue('Value7', $course_exam); 
$document->setValue('Value8', $course_description); 
$document->setValue('Value9', $syllabus_person); 
$document->setValue('Value10', $syllabus_academy_opinion); 
foreach($syllabus_experiment as $a) { 
$table->addRow(); 
$table->addCell(30)->addText($i); 
$table->addCell(118)->addText($a->lmsExperiment->getExperimentName()); 
$table->addCell(118)->addText(''); 
$table->addCell(50)->addText($a->lmsExperiment->getExperimentExperimental()); 
    $table->addCell(50)->addText($a->lmsExperiment->getThisExperimentHours()); 
    $table->addCell(50)->addText($a->lmsExperiment->getExperimentEachNumber()); 
    $table->addCell(50)->addText($a->lmsExperiment->getExperimentLab()); 
    $table->addCell(50)->addText($a->lmsExperiment->getExperimentProjectArrange()); 
    $i ++; 
} 
$document->save('/var/sitLims/web/uploads/lmsSyllabus/' . $syllabus_name . '.docx');` 

我不確定在創建字文件時如何插入表 我應該在任何位置插入模板表嗎?模板中的PHP字插入表

回答

2

壞消息是:這是行不通的。

setValue函數期望參數爲純文本,而$table包含一個對象。目前沒有解決方案讓$table對象返回可與setValue一起使用的內容。

由於我遇到同樣的問題,我創建了一個解決方法。爲了達到這個目的,你必須在你的模板裏添加你想用在文檔中的表格。在每個單元格內使用一個變量名稱在此表內創建一行。

從補丁版本的PHPWord中調用cloneRow函數以接收所需數量的錶行。之後,只需使用setValue將行號附加到每個變量。

你可以得到的代碼和完整的解釋在我的網站: http://jeroen.is/phpword-templates-with-repeating-rows/

+0

你好,5年後有在cloneRow構建其工作。但沒有很好解釋,如果有人需要幫助,只需進入樣品並閱讀它應該可以工作。 – 2018-02-26 22:18:31

2

將它添加到PHPWord \作家\ Word2007中\ Document.php

public function getObjectAsText($element){ 

    if($this->getParentWriter()->getUseDiskCaching()) { 
     $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); 
    } else { 
     $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); 
    } 
    if($element instanceof PHPWord_Section_Text) { 
     $this->_writeText($objWriter, $element); 
    } elseif($element instanceof PHPWord_Section_TextRun) { 
     $this->_writeTextRun($objWriter, $element); 
    } elseif($element instanceof PHPWord_Section_Link) { 
     $this->_writeLink($objWriter, $element); 
    } elseif($element instanceof PHPWord_Section_Title) { 
     $this->_writeTitle($objWriter, $element); 
    } elseif($element instanceof PHPWord_Section_TextBreak) { 
     $this->_writeTextBreak($objWriter); 
    } elseif($element instanceof PHPWord_Section_PageBreak) { 
     $this->_writePageBreak($objWriter); 
    } elseif($element instanceof PHPWord_Section_Table) { 
     $this->_writeTable($objWriter, $element); 
    } elseif($element instanceof PHPWord_Section_ListItem) { 
     $this->_writeListItem($objWriter, $element); 
    } elseif($element instanceof PHPWord_Section_Image || 
      $element instanceof PHPWord_Section_MemoryImage) { 
     $this->_writeImage($objWriter, $element); 
    } elseif($element instanceof PHPWord_Section_Object) { 
     $this->_writeObject($objWriter, $element); 
    } elseif($element instanceof PHPWord_TOC) { 
     $this->_writeTOC($objWriter); 
    } 
    return trim(preg_replace("/[\x1-\x8\xB-\xC\xE-\x1F-\t+]/", "", $objWriter->getData())); 

} 

插入表格:

$obPHPWord = new PHPWord(); 
$obPHPWordDocument = $obPHPWord->loadTemplate('template.docx'); 
$section = $this->obPHPWord->createSection(); 
$table = $section->addTable(); 
$table->addRow(900); 
// Add cells 
$table->addCell(2000)->addText('Col 1'); 
$table->addCell(2000)->addText('Col 2'); 
$table->addCell(2000)->addText('Col 3'); 

$objWriter = PHPWord_IOFactory::createWriter($obPHPWord, 'Word2007'); 
$sTableText = $objWriter->getWriterPart('document')->getObjectAsText($table); 
$obPHPWordDocument->setValue('myTable', $sTableText); 
$obPHPWordDocument->save('result.docx');