poi读取doc列表段落前缀序号

本文介绍了如何利用Apache POI库(HWPF模块)解析DOC文件,详细阐述了读取列表段落前缀序号的方法。
摘要由CSDN通过智能技术生成

poi doc hwpf 读取列表段落序号

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.model.ListData;
import org.apache.poi.hwpf.model.ListLevel;
import org.apache.poi.hwpf.model.ListTables;
import org.apache.poi.hwpf.usermodel.Paragraph;


/**
 * @author: hyl
 * @date: 2021/11/15
 **/
public class ReadDocNumber {
   
    /**
     * 获取列表段落的前缀编号内容,符号数字或字母,括号小数点之类的
     * 用此方法若出现第二个编号类型相同的段落列表,会直接接之前那个编号类型相同的段落列表的编号,不是从1开始。
     * 解决思路:通过列表循环时判断,如果中间出现了非段落列表类型的,就将一个特殊值传进来,一旦特殊值传进来,此方法内所有常量全部清零。
     * 已解决
     * @param paragraph 目标文本
     * @param document  目标文档
     * @return 列表编号
     */
    public static String getListNumber(Paragraph paragraph, HWPFDocument document, boolean isFirst) {
   
        ListTables listTables = document.getListTables();
        //如果是0为平面列表,如果为1为嵌套列表
        int lsid = paragraph.getList().getLsid();
        ListData listData = listTables.getListData(lsid);
        ListLevel[] listLevel = listData.getLevels();
        int ilvl = paragraph.getIlvl();
        ListLevel level = listLevel[ilvl];
        //所得到的numberFormat实际上对应着Microsoft的MSONFC(2.2.1.3),可以根据官网写的对应的编号类型,在这里进行组装
        //现有的为大小写字母和数字 0为十进制数字,3为大写字母,4为小写字母
        String numText = level.getNumberText();
        int numText2 = level.getNumberFormat();

        return getNumText(numText, numText2, isFirst);

    }

    //只支持6级
    //1.
    //  1.1
    //     (1)
    //        (a)
    //           1)
    //             a)
    //               A)
    //                 (A)

    private static int level_1_counter = 0;
    private static int level_2_counter = 0;
    private static int level_3_counter = 0;
    private static 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值