使用PHP服务器在客户端计算机上填充Word模板中的数据

时间:2013-11-27 03:28:36

标签: php com ms-word

我很头疼,此时我需要一些帮助。

基本上我所拥有的是工作时计算机上的服务器(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 个答案:

答案 0 :(得分: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);