近期在做一个网站建设项目中客户提出能否实现在后台对word文档内容做修改,本着尽一切努力满足客户要求的服务理念,开始了尝试和探索,经过网上的搜索学习,最终实现了用php对word文档内容进行修改的功能。具体方法思路和代码如下:
首先是实现这个功能的整个过程思路:
1、将word另存为网页。
2、修改为默认页面视图。
3、编写php代码。
4、通过fwrite等函数修改Word内容即可。
接着就是具体实现的这个功能的代码:
ob_start();//开启缓存
print'';//输出头部
$content = file_get_contents
(S_ROOT.'./temp/word/jzydt.htm');//取得模板内容
$content = str_replace('<{jzydt_company_name}>',"400电话",$content);//经过一列替换操作,将会模板里的标签替换为接受的值,如果感觉有必要的话,用正则替换也行,但我不建议动不动就用正则,能不用就不用吧!
$docname = 'jzydt.doc';//生成保存的文件名,后缀为doc
echo $content;//将替换后的内容输出到缓存中
print "";
$data = ob_get_contents();
ob_end_clean();
$fp=fopen(S_ROOT.'./temp/word/'.$docname,"wb");//以二进制写权限打开一个新的word文件,即新建
fwrite($fp,$data);//将内容写入并 保存
fclose($fp);
注意事项:使用php时,因为加密等原因,如果直接用FILE后者OPEN等函数读取WORD的话往往是乱码,原来要使用COM 这是我简单的一个读取并存储到新的WORD上的文件。具体代码如下:
<?
// 建立一个指向新COM组件的索引
$word = new COM(”word.application”) or die(”Can't start Word!”);
// 显示目前正在使用的Word的版本号
//echo “Loading Word, v. {$word->Version}<br>”;
// 把它的可见性设置为0(假),如果要使它在最前端打开,使用1(真)
// to open the application in the forefront, use 1 (true)
//$word->Visible = 0;
//打?一个文档
$word->Documents->OPen(”d:\myweb\muban.doc”);
//读取文档内容
$test= $word->ActiveDocument->content->Text;
echo $test;
echo “<br>”;
//将文档中需要换的变量更换一下
$test=str_replace(”<{变量}>”,”这是变量”,$test);
echo $test;
$word->Documents->Add();
// 在新文档中添加文字
$word->Selection->TypeText(”$test”);
//把文档保存在目录中
$word->Documents[1]->SaveAs(”d:/myweb/comtest.doc”);
// 关闭与COM组件之间的连接
$word->Quit();
?>
好了,以上内容就是今天为大家介绍的关于php对word文档内容进行修改的方法及全部代码,如果你在网站建设过程中也遇到类似的问题,希望可以给你作参考。