当前位置:  开发笔记 > 编程语言 > 正文

用PHP读/写MS Word文件

如何解决《用PHP读/写MSWord文件》经验,为你挑选了6个好方法。

是否可以在不使用COM对象的情况下在PHP中读取和写入Word(2003和2007)文件?我知道我可以:

$file = fopen('c:\file.doc', 'w+');
fwrite($file, $text);
fclose();

但Word会将其读作HTML文件而不是本机.doc文件.



1> Stefan Gehri..:

读取二进制Word文档将涉及根据DOC格式的已发布文件格式规范创建解析器.我认为这不是真正可行的解决方案.

您可以使用Microsoft Office XML格式来读取和写入Word文件 - 这与Word和2003版本的Word兼容.对于阅读,您必须确保以正确的格式保存Word文档(在Word 2007中称为Word 2003 XML-Document).对于编写,您只需遵循公开可用的XML模式.我从来没有使用这种格式从PHP写出Office文档,但是我用它来读取Excel工作表(自然保存为XML-Spreadsheet 2003)并在网页上显示其数据.由于文件显然是XML数据,因此在内部导航并找出如何提取所需数据是没有问题的.

另一个选项 - 仅限Word 2007选项(如果Word 2003中未安装OpenXML文件格式) - 将重新编写OpenXML.正如databyss在这里指出的那样,DOCX文件格式只是一个包含XML文件的ZIP存档.MSDN上有很多关于OpenXML文件格式的资源,因此您应该能够弄清楚如何读取所需的数据.我认为写作会复杂得多 - 这取决于你投入多少时间.

也许您可以查看PHPExcel,它是一个能够写入Excel 2007文件并使用OpenXML标准从Excel 2007文件读取的库.您可以在尝试读取和编写OpenXML Word文档时了解所涉及的工作.



2> 小智..:

这适用于vs




3> Mantichora..:

您可以使用Antiword,它是适用于Linux和大多数流行操作系统的免费MS Word阅读器.

$document_file = 'c:\file.doc';
$text_from_doc = shell_exec('/usr/local/bin/antiword '.$document_file);


这种解决方案的问题在于它假定一个人能够在服务器上安装软件.
有点长时间,但如果我错了,请纠正我.`C:\ file.doc`是一个windows目录,`/ usr/local/bin`是一个Linux/Unix目录?

4> Joe Lencioni..:

我不知道在PHP中阅读本机Word文档,但如果你想用PHP编写Word文档,WordprocessingML(又名WordML)可能是一个很好的解决方案.您所要做的就是以正确的格式创建XML文档.我相信Word 2003和2007都支持WordML.



5> 小智..:

只是更新代码

1996)
        {   
            break;  
        }
    }

    //echo $caracteres;

    $lines = explode(chr(0x0D),$line);
    //$outtext = "
";

    $outtext = "";
    foreach($lines as $thisline)
    {
        $tam = strlen($thisline);
        if( !$tam )
        {
            continue;
        }

        $new_line = ""; 
        for($i=0; $i<$tam; $i++)
        {
            $onechar = $thisline[$i];
            if( $onechar > chr(240) )
            {
                continue;
            }

            if( $onechar >= chr(0x20) )
            {
                $caracteres++;
                $new_line .= $onechar;
            }

            if( $onechar == chr(0x14) )
            {
                $new_line .= "";
            }

            if( $onechar == chr(0x07) )
            {
                $new_line .= "\t";
                if( isset($thisline[$i+1]) )
                {
                    if( $thisline[$i+1] == chr(0x07) )
                    {
                        $new_line .= "\n";
                    }
                }
            }
        }
        //troca por hiperlink
        $new_line = str_replace("HYPERLINK" ,"",$new_line); 
        $new_line .= "\n";

        //link de imagens
        $new_line = str_replace("INCLUDEPICTURE" ,"

",$new_line); $new_line = str_replace("MERGEFORMATINET" ,"",$new_line); $outtext .= nl2br($new_line); } return $outtext; } $userDoc = "custo.doc"; $userDoc = "Cultura.doc"; $text = parseWord($userDoc); echo $text; ?>



6> Sergey Korni..:

很可能你没有COM就无法阅读Word文档.

本主题介绍了写作

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有