2013-11-27 50 views
0

在Word模板數據我越來越頭疼,在這一點上我需要一些幫助。使用PHP服務器,填入客戶端計算機

基本上我有什麼是我的工作計算機上的服務器(XAMPP)設置。在這臺服務器上,我有一個腳本,用於從數據庫中檢索數據以及用戶輸入來創建和填充Word 2007模板。這部分工作得很好。

我的問題是,當我轉到我們網絡上的另一臺計算機並鍵入我的服務器的IP地址並通過相同的過程從Word模板創建文件時,所有數據都會打開Word文件服務器計算機,而不是客戶端計算機上。有人知道如何解決這個問題嗎?

這是Word模板創建頁面代碼:

<?php 
include_once 'core/classes/company.php'; 

$word = new COM("word.application") or die("Unable to start Word"); 
$word->visible=1; 
$template_file = 'C:/xampp/htdocs/portal/includes/templates/form1.dotx'; 
$word->Documents->Open($template_file); 
//Part Number 
$partNumBookMark = 'PartNum'; 
$objBookmark = $word->ActiveDocument->Bookmarks($partNumBookMark); 
$range = $objBookmark->Range; 
$range->Text = $part_num; 
//Part Name 
$partNameBookMark = 'PartName'; 
$objBookmark = $word->ActiveDocument->Bookmarks($partNameBookMark); 
$range = $objBookmark->Range; 
$range->Text = $part_name; 

$word=null; 
unset($word); 

在COM對象的初始化,我試過('word.application', 'localhost),但無濟於事。同樣,當我從該服務器運行計算機腳本這個工作得很好,但我不能讓Word文檔出現最後的輸入和保存在客戶端計算機上。有任何想法嗎?

+1

你需要告訴Word將文檔保存到一個臨時文件,然後發送的內容該文件在您的HTTP響應中。在這一點上,它只是一個常規的文件下載。我相信你可以很容易地找到關於如何使用PHP實現的示例(我不熟悉這些示例)。 –

回答

0

我結束了這段代碼,現在可在網絡上打開其他計算機上的文件:

// Save document 
$filename = tempnam(sys_get_temp_dir(), "word"); 
$word->Documents[1]->SaveAs($filename); 

// Close and quit 
$word->Quit(); 
unset($word); 
header("Content-Length: ".filesize($filename)); 
//header("Content-Type: application/force-download"); 
header("Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document"); 
header("Content-Disposition: attachment;Filename=document_name.docx"); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 

// Send file to browser 

readfile($filename); 
unlink($filename); 
相關問題