t202201
V2EX  ›  Java

Java 导出 word 解决方案

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