POI刪除Word中多餘空行

在POI中,根據換行符,將Word分成一個個的段落,

通過獲取段落集合,判斷段落中的text等屬性是否爲空,來進行刪除

話不多說,見代碼

public static void changeText(XWPFDocument document){
    //獲取文字段落集合
    List<XWPFParagraph> paragraphs = document.getParagraphs();
    //所有類型集合(文字段落、表格、圖片等)
    List<IBodyElement> listBe = document.getBodyElements();
    List<Integer> runList = new ArrayList<>();
    int n = 0;

    for(int i = 0; i < listBe.size(); i++){

        //BodyElementType.PARAGRAPH : 枚舉中的文字段落
        //文字爲空時,先添加到list中;
        //注意picture類型也在PARAGRAPH中,需要校驗embeddedPictures的長度是否爲0
        //爲0表示空行,大於0表示有圖片,可能還有其他類型,暫時沒遇到,各位自行斟酌
        if(StringUtils.isEmpty(paragraphs.get(n).getRuns().get(0).text())
            && paragraphs.get(n).getRuns().get(0).getEmbeddedPictures().size() == 0){

            runList.add(i);

        }

        n++;

        //非文字段落n-1
        if(listBe.get(i).getElementType() != BodyElementType.PARAGRAPH){
            n--;
        }
        
    }

    //遍歷list刪除
    for(int i = runList.size() - 1; i >= 0; i--){
        document.removeBodyElement(runList.get(i));
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章