docx库Table踩坑
docx库Table踩坑
介绍
最近工作中遇到了需要导出word
文档的需求,只是简单的将列表详情的数据导出成word
中的表格。
类似于下面的效果:
标题 | 内容 |
---|---|
标题 | 内容 |
标题 | 内容 |
之后找到了相关的工具库docx。
功能强大,他封装了word
中的相关模块的构造方法,只需要简单的创建一个对象就可以生成word
文档。
其中的一些构造方法有Document
、Table
、Paragraph
、TextRun
等。
正文
接着就正式开始嘎嘎一顿操作。
简单实现
1 |
|
简单试试:
1 |
|

看着没啥问题,但是他没有撑满整个文档。
给Table
加个宽度。
- 因为存在一个标题存在多条数据的情况,所以需要使用到
rowSpan
,和htmltable
同理。 verticalAlign
,内容垂直对齐方式。Paragraph
段落内容,可以当成文字使用。TableRow
,等同于html的tr
TableCell
,等同于html的td
添加宽度
1 |
|

- WidthType 是一些宽度类型的枚举值
AUTO(default) | PERCENTAGE(百分比) | NIL(空) | DXA(二十分之一点)
- 关于这个
DXA
单位,大致看下这里。
看着没问题。 再试试多加点内容的情况👍。
1 |
|

有点问题,文字多的那一栏,宽度超出了太多。
并且在钉钉里看到的预览效果是这样的。


在仓库里逛了会儿issue
找到了对应的问题。
解决办法-1。
解决办法-2。
- 不再使用百分比宽度,而是使用
DXA
宽度。 - 将
Table
的宽度设置成0,并且规定其列数和列宽。 - 设置
Table
的layout
为FIXED
。
1 |
|
关于上面宽度设置成0的问题,打开word
文档查看:
虽然指定宽度的按钮未被选中,但是在钉钉中依旧生效了。
将其指定为0
保证完全不受影响。
设置Table
的layout
为FIXED
,表示固定尺寸,防止单元格被压缩变形。
关于DXA
的问题,个人猜测是可能百分比不被识别。
最后附上完整的例子。

结束
简单记录下此次使用docx的踩坑。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!