The following code introduces how to convert html into word using php, and the specific content As shown below:
This has been tested. There is one disadvantage with this method. The html page code must be written in php, but it can run anyway. See the program
<?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(); //} ?>
Let me share with you a piece of code php to convert word to html
For a perfect solution, it is best to use windows office software to convert office to pdf or html. Libreoffice cannot convert perfectly, and wps does not have an API.
First confirm whether the com module is enabled. If there is a com_dotnet module in phpinfo, it means it is enabled. If not, modify php.ini,
The code is as follows:
com.allow_dcom = true
Remove the previous comments and restart. The official PHP website says that before PHP5.4.5, the COM module was built-in. In fact, it may not be the case. In PHP 5.3.39 under the official website, the COM module is not built-in.
If it is not a built-in module, add it to php.ini, provided that you have the extension in your ext folder
The code is as follows:
extension=php_com_dotnet.dll
Then restart and it will be OK
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');
Note:
1. Check the source code of the converted html, it’s quite messy
2. winword.exe will be called during the conversion process
3. If the page keeps loading, rename the document and load again.