PHP调用COM读写Word造成乱码的问题

不流泪的机场 发布于 2013/04/12 14:29
阅读 1K+
收藏 1
由于项目需要,要用PHP读写Word文件(模板),开源的项目例如phpword,phpdocx等都测试过,但是都有各种各样的问题,phpword已经很长时间没有人维护了,基本处于报废的状态,phpdocx免费版貌似不能操作模板文件,createdocx类里面根本没有addtemplate的方法,和官网的教程差异太大,所以最后也放弃了。

选来选去只能用COM来手工操作Office组件进行Word文件的读写,测试下来确实能够达到功能要求,但是写入中文会在中文后面留下一串乱码,很是烦人,没办法解决,请各位专家会诊,呵呵!主要代码贴在下面:

$word = new COM('word.application', null, CP_UTF8) or die('请安装Word');
$word->Visible = false;
           try {
            $word->Documents->Open($template_path.'test.doc') or die('无法打开文件');
            $bookmarks = $word->ActiveDocument->Bookmarks->Count;


            for ($i = 1; $i <= $bookmarks; $i++) {
               $bookmark = $word->ActiveDocument->Bookmarks->Item($i);
               $bookmark->Range->Text = trim(strval($bookmark_value[$bookmark->Name]));
            }

           $word->ActiveDocument->SaveAs($save_path.$file['file_name']);
           $word->Quit();
        } catch (Exception $e) {
           header("Content-Type: text/html;charset=utf-8");
           echo $e->getMessage();
           $word->Quit();
           exit;
        }

加载中
0
不流泪的机场
不流泪的机场
没人会???真是奇葩了,在PHP论坛上也是没有人回复,好不容易版主回复了一个,答案却是"没怎么用过这种功能,不清楚。。。"
0
cat_l_fish
cat_l_fish

'test.doc'

请问如果是中文的文件名,你是如何处理的呢?

cat_l_fish
cat_l_fish
回复 @不流泪的机场 : 请问你是如何将中文文件名转英文呢?
不流泪的机场
不流泪的机场
转成英文名
0
tqp我就是我
tqp我就是我

我导出excel时用过iconv ( "UTF-8", "GB2312", $cv );这个,你觉得你这个会怎么用呢?

tqp我就是我
tqp我就是我
回复 @不流泪的机场 : 就是转码啊
不流泪的机场
不流泪的机场
不懂你的意思
0
c
chy111
PHP实现读取Word模板文件, 可以使用PageOffice插件实现  ,PageOffice插件是支持中文的文件名
返回顶部
顶部