实例详解PHP中html word 互转的方法

5年以前  |  阅读数:479 次  |  编程语言:PHP 

下面一段代码给大家介绍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();
    //}
    ?>

下面给大家分享一段代码php实现word转html的方法

要想完美解决,office转pdf或者html,最好还是用windows office软件,libreoffice不能完美转换,wps没有api。

先确认com模块是不是开启,phpinfo里面如果有com_dotnet模块,说明已开启,如果没有,修改php.ini,
代码如下:

com.allow_dcom = true

前面的注释去掉,重启就OK了,php官方网站说,php5.4.5之前,com模块是内置的,其实也不一定全是,官网下的php 5.3.39,com模块就没有内置。
如果不是内置模块的话,php.ini加上,前提你的ext文件夹下,有该扩展

代码如下:


    extension=php_com_dotnet.dll

然后重启就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');

注意:

1. 转换出来的html,查看源码,比较乱的

2. 转换过程中会调用winword.exe

3. 如果页面一直在加载,把文档重命名,然后在重新转。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例