是否可以在不使用COM对象的情况下在PHP中读取和写入Word(2003和2007)文件?我知道我可以:
$file = fopen('c:\file.doc', 'w+'); fwrite($file, $text); fclose();
但Word会将其读作HTML文件而不是本机.doc文件.
读取二进制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文档时了解所涉及的工作.
这适用于vs
您可以使用Antiword,它是适用于Linux和大多数流行操作系统的免费MS Word阅读器.
$document_file = 'c:\file.doc'; $text_from_doc = shell_exec('/usr/local/bin/antiword '.$document_file);
我不知道在PHP中阅读本机Word文档,但如果你想用PHP编写Word文档,WordprocessingML(又名WordML)可能是一个很好的解决方案.您所要做的就是以正确的格式创建XML文档.我相信Word 2003和2007都支持WordML.
只是更新代码
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文档.
本主题介绍了写作