Skip to content

解析 MSOffice Word 有序列表样式

最近在处理一个功能: 复制 Word 中的有序列表,粘贴到我们的 WebOffice

中文有序列表常用样式如下:

txt
一、有序列表1
二、有序列表2
三、有序列表3

壹、有序列表1
贰、有序列表2
叁、有序列表3

甲、有序列表1
乙、有序列表2
丙、有序列表3

微软 DocumentFormat 文档

下面的链接中详细的说明了 NumberFormatValues 样式

NumberFormatValues Enum

解析字段

在处理粘贴式,获取粘贴的 html 进行样式解析,其中:

mso-level-number-format

javascript
mso-level-number-format:chinese-counting

这种样式使用中文数字,例如一、二、三、四等。它是较为常见的中文文档有序列表样式,使用中文数字对文档进行编号

其他字段

这里我直接从 Word 文件解压的 numbering.xml 可以看到有序列表有哪些字段:

xml
...

<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="japaneseCounting" /><w:isLgl w:val="false"/><w:suff w:val="tab"/>
<w:lvlText w:val="%1、"/>
<w:lvlJc w:val="left" />
<w:pPr>

...

可以看到除了 mso-level-number-format 定义了有序列表样式外,还有如下一些字段需要进行适配:

  1. <w:lvl w:ilvl="0">: 定义编号的第一个级别(ilvl=0表示第一级别)

  2. <w:start w:val="1"/>: 指定该级别的编号从1开始。

  3. <w:numFmt w:val="japaneseCounting"/>: 使用日文计数格式。这意味着文档中的编号将采用日文的计数方式,例如:“一、二、三、...”

  4. <w:isLgl w:val="false"/>: 表示不使用法律编号(legal numbering

  5. <w:suff w:val="tab"/>: 指定编号后的后缀是制表符(Tab

  6. <w:lvlText w:val="%1、"/>: 设置编号文本格式,使用 %1、 表示编号后跟一个顿号

  7. <w:lvlJc w:val="left"/>: 将编号文本左对齐

  8. <w:pPr>: 段落属性标签

Released under the MIT License.