V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hanyouchun66
V2EX  ›  PHP

代码里生成 Word 有什么第三方工具吗

  •  
  •   hanyouchun66 · 2016-06-18 17:11:55 +08:00 · 3914 次点击
    这是一个创建于 3079 天前的主题,其中的信息可能已经有所发展或是发生改变。

    业务需要生成一张试卷. 格式是 Word. 供给用户下载. 目前拿到了题目信息. 如下 { "question": "

    问题:已知 f(x)=x2+bx+c(b,c∈R)(1) 当 b=c 时若函数 f(x) 的图像与 x 轴有两个交点, 其坐标分别为 x1,x2, 求证 x1<-1 且 x2<-1?

    ", "answer": "答案:2", }

    需要生成如下格式: 现在的问题是

    1. 有没有方便快捷的第三方工具可以用于生成 Word.
    2. 数据插入到 Word 后. 数据里的 html 标签需要被解析. 比如里面有 img 图片标签. 需要在 Word 里显示出来.

    特此寻求大家. 谢谢!

    目前用到了 phpoffice, 但是里面的 html 标签好像不会被解析, 就把 html 当做字符串写进去了

    第 1 条附言  ·  2016-06-19 12:09:08 +08:00
    现在准备转成 PDF 了~
    第 2 条附言  ·  2016-06-20 09:24:24 +08:00
    自问自答.找到了方法.
    其实很简单.直接把 html 写到 .doc 文件里即可.
    函数
    function word($data,$fileName=''){
    if(empty($data)) return '';
    $data='<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">'.$data.'</html>';
    if(empty($fileName)) $fileName=date('YmdHis').'.doc';
    $fp=fopen($fileName,'wb');
    fwrite($fp,$data);
    fclose($fp);
    }
    $str = '<h2>hello daye</h2>';
    word($str);

    效果
    <img src='https://segmentfault.com/img/bVyiYu'>
    15 条回复    2016-06-20 08:32:57 +08:00
    murmur
        1
    murmur  
       2016-06-18 18:14:50 +08:00
    感觉文本转公式就只有 latex 了
    Bayestheorem
        2
    Bayestheorem  
       2016-06-18 18:48:55 +08:00
    有过类似需求……不过还是选择了 html 转 pdf
    Patrick95
        3
    Patrick95  
       2016-06-18 19:10:37 +08:00
    公式很难处理吧
    ejq
        4
    ejq  
       2016-06-18 22:00:44 +08:00
    似乎 Pandoc 可以,之前用它把 Markdown 写的东西转成 Word
    不过还是觉得转成 LaTeX->PDF 比转成 Word 方便得多
    garipan
        5
    garipan  
       2016-06-18 22:08:29 +08:00
    关键是就算生成了复杂的公式, Word 也无法正常显示啊。除非变成图片
    stupidcat
        6
    stupidcat  
       2016-06-18 22:17:51 +08:00
    C#, microsoft word object library
    owt5008137
        7
    owt5008137  
       2016-06-19 00:43:15 +08:00
    你需要 pandoc ,或者 latex
    owt5008137
        8
    owt5008137  
       2016-06-19 00:46:10 +08:00
    @murmur javascript 的话 mathjex 也可以,不好好像也是仿照 latex 的公式语法的。
    PPTing
        9
    PPTing  
       2016-06-19 00:57:19 +08:00
    歪个楼(为何这帖子用 V2ex+ 打开就奔溃了
    strwei
        10
    strwei  
       2016-06-19 01:23:17 +08:00
    我一般生成 txt 可用 wps 打开
    qiayue
        11
    qiayue  
       2016-06-19 07:55:24 +08:00 via Android
    @PPTing 因为正文里有一段 json
    shiying0618
        12
    shiying0618  
       2016-06-19 16:48:14 +08:00
    如果是固定格式的,可以做一个格式的 example ,然后用 word 另存为 xml 格式

    用 freemarker 根据内容动态生成这个 xml 文档,就能直接用 word 打开了
    CYKun
        13
    CYKun  
       2016-06-19 21:11:15 +08:00
    http://poi.apache.org/

    apache 的 Office API ,挺强大的,虽然菜鸟感觉不太好用
    chengzi
        14
    chengzi  
       2016-06-20 00:24:41 +08:00
    https://github.com/WordDocX/DocX
    试试这个,原生 c#,但是公式始终是个问题啊
    hellopy
        15
    hellopy  
       2016-06-20 08:32:57 +08:00
    phpword
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:16 · PVG 04:16 · LAX 12:16 · JFK 15:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.