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

Java 导出 word 解决方案

  •  
  •   t202201 · 264 天前 · 3111 次点击
    这是一个创建于 264 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前有一个需求,需要导出 word ,word 里除了普通文字,还有表格,表格不定长度,且有图片。<br><br>有大佬知道有什么简单的方案可以实现吗?
    第 1 条附言  ·  263 天前
    最终决定用了 poi-tl ,http://deepoove.com/poi-tl ,确实很强大,满足了所有需求。按照这个框架,基本上一天就做完了需求。
    32 条回复    2023-01-10 23:15:35 +08:00
    wangsongyan
        1
    wangsongyan  
       264 天前 via iPhone
    freemarker+word xml
    blankmiss
        2
    blankmiss  
       264 天前
    定义个模版 然后用 库去进行填充?
    hhjswf
        3
    hhjswf  
       264 天前 via Android
    我的看法是数据给前端,前端渲染 html 转 word
    Akitora
        4
    Akitora  
       264 天前
    freemarker+word xml
    kwh
        5
    kwh  
       264 天前
    好像安装了 word 的 Windows 上可以通过命令调用转换成其他格式
    ElegantOfKing
        6
    ElegantOfKing  
       264 天前
    我恰好在公司做这块的。结论直接告诉你:没有简单的。
    调研过很多方案,没有一个合适的,最终只能自研。
    建议不要接这个项目。如果真的要接的话,去看看 word 的组成 xml 如何组装,以及 poi jar 包下的一些工具。
    Naccl
        7
    Naccl  
       264 天前
    freemarker+word xml
    先用 word 写个模板导出 xml ,用 freemarker 填充
    可以看看 https://github.com/pingfangushi/screw
    曾经也做过类似的小玩具 https://github.com/Naccl/Java2Doc
    Suaxi
        9
    Suaxi  
       264 天前 via Android
    用 poi-tools 做过文字 + 不定长表格的导出,还行,不过可以试试楼上说的 freemaker + word xml ,以前组长用 jasper 做过按模板导出,也还行
    Naccl
        10
    Naccl  
       264 天前
    @nodejx markdown 是其中一种输出,也支持 word ,核心思想就是按模板填充文本,导出对应格式的文件
    lyonbrown4ddd
        11
    lyonbrown4ddd  
       264 天前 via iPhone
    了解一下 pandoc ? 我记得好像可以 html 转 word 如果不行就先 makrdown 再 word
    Jirajine
        12
    Jirajine  
       264 天前
    如果要打印,那就渲染成 pdf ;如果要展示,那就渲染成 HTML 。转成 word 很简单,但是对效果有任何要求的,不拥抱开放格式那就踩坑去吧。
    luxiang1204
        13
    luxiang1204  
       264 天前 via Android
    t202201
        14
    t202201  
    OP
       264 天前
    @lyonbrown4ddd 我之前浅浅地用过 pandoc ,当时还是用命令行,不知道有没有 java 的 api
    inrmsYu
        15
    inrmsYu  
       264 天前
    easyPOI 映射实现
    tedzhou1221
        16
    tedzhou1221  
       264 天前
    poi-tl ,用 freemarker 太难维护了。用了 poi-tl 之后真爽。
    luoyonghao
        17
    luoyonghao  
       264 天前
    用 poi-tl 吧,我最近做的公司报表就是基于 poi-tl 做的,你的需求很容易实现,目前我的报告实现了普通文本、表格、有序列表、图表( word 图表),合并单元格,还可编写自定义插件实现别的样式,甚至还有代码高亮
    waysn39
        18
    waysn39  
       264 天前
    不懂原始需求,如果可以用模板优先关键字加模板,这种最简单。
    如果不可以用模板实现,我建议直接 POI ,楼上说的那些基本都是用 POI ,封装一些接口出来方便使用的,我不建议用。更倾向直接 POI ,可以研究一下。另外 注意 office 版本。要兼容。
    weijiagege
        19
    weijiagege  
       264 天前
    做过类似的需求,也一样是文字,表格,以及 echart 图片等,另外模板内容不固定随时变换,当时讨论后最终选择让前端来导出。前端做的就是将数据拼装成对应的 html 字符串,后面转 blob 然后调插件导出 docx 文件。坑略多但总体效果还可以。
    ql562482472
        20
    ql562482472  
       264 天前
    有开发能力就用 poi 没有就用 poitl 或者 easypoi 很容易。
    lwc645089781
        21
    lwc645089781  
       264 天前
    aspose word 非常简单,效果也是最好的。只是不免费
    Mandelo
        22
    Mandelo  
       264 天前
    用模板填充的路过,表格头像都可以
    nyar
        23
    nyar  
       264 天前
    aspose word 来做很简单,aspose 网上也有破解版,可以先试试效果。
    Gavin666
        24
    Gavin666  
       264 天前
    关键词:libreoffice
    OrangeAdd
        25
    OrangeAdd  
       264 天前
    楼主可以看看这个 http://deepoove.com/poi-tl ,亲测挺好用的。
    LovelornOwl
        26
    LovelornOwl  
       264 天前
    java 导 word 用 docx4j
    nitmali
        27
    nitmali  
       264 天前
    jxls
    YvenChang
        28
    YvenChang  
       264 天前
    我司一开始用的最简单直接的方法就是组装一个 html 然后输出成 docx 后缀的文件,office 可以直接打开 html 文件,但是问题是对他做任何修改都会在本地生成一个 html 资源目录。
    解决方案就是组装成 mhtml 格式就能让这些资源都保存在一个文件里。
    但是...emmm 就是会有各种奇奇怪怪的问题。
    最好的方案当然还是找个成熟的框架,不过这个方法应急还是可以的。
    xuanbg
        29
    xuanbg  
       264 天前
    POI
    gg1025
        30
    gg1025  
       264 天前
    poi-tl 神器
    lyonbrown4ddd
        31
    lyonbrown4ddd  
       264 天前
    @t202201 pandoc 我记得没有 java api 拿 command 方式调用么 我觉得这个是最简单的方式了 只是需要集成一下 pandoc
    b1gCi
        32
    b1gCi  
       263 天前 via Android
    原来做过几年相关的开发,推荐 docx4j ,不行就自己 freemarker 生成 word xml
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1900 人在线   最高记录 6067   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 06:30 · PVG 14:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.