2014-01-12 53 views
1

循環我得到這個錯誤:PHPWord模板,通過查詢結果不填充值

Fatal error: Uncaught exception 'Exception' with message 'Could not close zip file.' in /home/dyken/public_html/PHPWord/Template.php:109 Stack trace: #0 /home/dyken/public_html/lettersWord.php(40): PHPWord_Template->save('MemberLetters.d...') #1 {main} thrown in /home/dyken/public_html/PHPWord/Template.php on line 109 

我有這樣的代碼:

$sql = "SELECT distinct p.person_id, fname_mi, lname, company_name, 
addr1, addr2, city, st, zip, greeting, email, fullName 
FROM person p 
INNER JOIN person_category c 
on c.person_id = p.person_id 
WHERE category_id = 1 
order by lname, fname_mi, company_name"; 

$result = mysqli_query($dlink,$sql); 

require_once 'PHPWord.php'; 

while ($row = mysqli_fetch_array($result)) { 

$PHPWord = new PHPWord(); 
$document = $PHPWord->loadTemplate('letters/testLetter.docx'); 

$document->setValue('Value1', $row[1]); 
$document->setValue('Value2', $row[2]); 
$document->setValue('Value3', $row[3]); 
$document->setValue('Value4', $row[4]); 
$document->setValue('Value5', $row[5]); 
$document->setValue('Value6', $row[6]); 
$document->setValue('Value7', $row[7]); 
$document->setValue('Value8', $row[8]); 
$document->setValue('Value9', $row[9]); 
$document->setValue('Value10', $row[10]); 
$document->setValue('Value11', $row[11]); 
$file = 'MemberLetters.docx' . $row[0]; 
$document->save($file); 

if(!$file) { 
    // File doesn't exist, output error 
    die('file not found'); 
} 
else { 
    header("Cache-Control: public"); 
    header("Content-Description: File Transfer"); 
    header("Content-Disposition: attachment; filename=$file"); 
    header("Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document"); 
    header("Content-Transfer-Encoding: binary"); 

    readfile($file); 
} 

unlink($file); 

exit; 
    } 

testLetter.docx包含此:

${Value1} ${Value2} 
${Value3} 
${Value4} 
${Value5} 
${Value6}, ${Value7} ${Value8} 

我無法獲得查詢來填充字母中的值。

查詢在網站的其他地方產生結果,所以我知道這是有效的。

$dlink是我$host, $user, $password$dbname連接

我收到文件,在文件夾中的信件,但沒有那麼多,因爲我希望和他們的testLetter.docx所有的精確副本與${Value1}等,而不是從數據我的查詢。

我已經嘗試了代碼的不同變體,但我永遠不會得到我的任何查詢結果代替$Values。有人可以幫助我嗎?我是PHPWord的新手。

回答

0

我也有這一段時間的奮鬥,它似乎是同一類問題。很顯然,根據你創建文檔的方式,word會生成不同類型的xml,例如,如果你在編寫$ {Value1}時犯了一個錯誤,然後回過頭來糾正它,那麼生成的xml與你正確編寫它的xml不同開始。

在互聯網上搜索我發現這個代碼在https://phpword.codeplex.com/workitem/49爲我工作,也許可以爲你工作。它是取代setValue方法的工作方式。

你也可以在http://phpword.codeplex.com/discussions/268012

找到更多關於我在說的內容