다음 코드는 php를 이용해 html을 word로 변환하는 방법을 소개합니다. 구체적인 내용은 다음과 같습니다.
이 방법에는 한 가지 단점이 있습니다. html 페이지 코드는 php로 작성해야 하지만 어쨌든 실행될 수 있습니다.
<?php class word{ function start(){ ob_start(); echo '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">'; } function save($path) { echo "</html>"; $data = ob_get_contents(); } function wirtefile($fn,$data){ $fp=fopen($fp,$data); fwrite($fp,$data); } } $html=' <table width=600 cellpadding="6" cellspacing="1" style="border:1px solid green;" style="border-collapse:collapse"> <tr style="border:1px solid green;"> <td style="border:1px solid green;">姓名</td> <td style="border:1px solid green;">性别</td> <td style="border:1px solid green;">年龄</td> <td style="border:1px solid green;">爱好</td> <td style="border:1px solid green;">备注</td> </tr> <tr style="border:1px solid green;"> <td style="border:1px solid green;">张三</td> <td style="border:1px solid green;">男</td> <td style="border:1px solid green;">32</td> <td style="border:1px solid green;">足球</td> <td style="border:1px solid green;">无</td> </tr> <tr style="border:1px solid green;"> <td style="border:1px solid green;"> 李四 </td> <td style="border:1px solid green;">男</td><td style="border:1px solid green;">43</td><td style="border:1px solid green;">篮球</td><td style="border:1px solid green;">无</td> </tr> </table> '; //批量生成 //for($i=1;$i<3;$i++){ $word = new word(); $word->start(); $wordname='个人测试php生成word.doc'; echo $html; $word->save($wordname); header('Content-type:application/word'); header('Content-Disposition: attachment; filename='.$wordname.''); //readfile($wordname); ob_flush();//每次执行前刷新缓存 flush(); //} ?>
단어를 HTML로 변환하는 PHP 코드를 공유하겠습니다
완벽한 솔루션을 위해서는 Windows Office 소프트웨어를 사용하여 Office를 PDF 또는 HTML로 변환하는 것이 가장 좋습니다. Libreoffice는 완벽하게 변환할 수 없으며 wps에는 API가 없습니다.
먼저 com 모듈이 활성화되어 있는지 확인하세요. phpinfo에 com_dotnet 모듈이 있으면 활성화되어 있다는 의미입니다.
코드는 다음과 같습니다.
com.allow_dcom = true
이전 주석을 제거하고 다시 시작하세요. PHP 5.4.5 이전에는 COM 모듈이 내장되어 있다고 나와 있지만, 실제로는 공식 웹사이트 아래 PHP 5.3.39에서는 그렇지 않을 수도 있습니다. COM 모듈은 내장되어 있지 않습니다.
내장 모듈이 아닌 경우 ext 폴더에 확장자가 있는 경우 php.ini에 추가하세요.
코드는 다음과 같습니다.
extension=php_com_dotnet.dll
그런 다음 다시 시작하면 괜찮을 것입니다
function word2html($wordname,$htmlname) { $word = new COM("word.application") or die("Unable to instanciate Word"); $word->Visible = 1; $word->Documents->Open($wordname); $word->Documents[1]->SaveAs($htmlname,8); $word->Quit(); $word = null; unset($word); } word2html('D:/www/test/6.docx','D:/www/test/6.html');
참고:
1. 변환된 HTML의 소스코드를 확인해보세요. 상당히 지저분합니다
2. 변환 과정에서 winword.exe가 호출됩니다
3. 페이지가 계속 로드되면 문서 이름을 변경하고 다시 로드하세요.