java poi 实现word文档分栏

请问java org.apache.poi jar包能实现word文档分栏效果吗?

image.png

阅读 3.8k
2 个回答
    XWPFDocument document = new XWPFDocument();
    CTDocument1 doc = document.getDocument();
    CTBody body = doc.getBody();
    if (!body.isSetSectPr()) {
    body.addNewSectPr();
    }
    CTSectPr section = body.getSectPr();
    CTColumns columns = section.getCols();
    columns.setNum(BigInteger.valueOf(2)); //文档分栏,2栏

除了poi外,推荐试用Spire.doc for Java这个控件哦,国产品牌,支持给Word文档进行分栏,在实现分栏时还可设置每栏的宽度、间距和分割线。下面代码可作参考。

import com.spire.doc.*;
import com.spire.doc.documents.*;

public class CreateMutiColumnWordDocument {
    public static void main(String[] args){
        //创建Word文档
        Document document = new Document();
        //添加一个section
        Section section = document.addSection();

        //添加三栏到section,并设置每栏的宽度和间距
        section.addColumn(100, 20);
        section.addColumn(100, 20);
        section.addColumn(100, 20);

        //添加栏分割线
        section.getPageSetup().setColumnsLineBetween(true);

        String paraText = "Spire.Doc for Java 是一款专业的Java Word组件,开发人员使用它可以轻松地将Word文档创建、"
                +"读取、编辑、转换和打印等功能集成到自己的Java应用程序中。作为一款完全独立的组件,"
                +"Spire.Doc for Java的运行环境无需安装Microsoft Office。";

        //添加段落到section
        Paragraph paragraph = section.addParagraph();

        //添加段落到section
        paragraph = section.addParagraph();
        //添加文本到段落
        paragraph.appendText(paraText);
        //添加分栏符 (分栏符后面的文字将从下一栏开始)
        paragraph.appendBreak(BreakType.Column_Break);

        //添加段落到section
        paragraph = section.addParagraph();
        //添加文本到段落
        paragraph.appendText(paraText);
        //添加分栏符
        paragraph.appendBreak(BreakType.Column_Break);

        //添加段落到section
        paragraph = section.addParagraph();
        //添加文本到段落
        paragraph.appendText(paraText);

        //创建段落样式,并设置字体和字号
        ParagraphStyle paragraphStyle = new ParagraphStyle(document);
        paragraphStyle.setName("style");
        paragraphStyle.getCharacterFormat().setFontName("宋体");
        paragraphStyle.getCharacterFormat().setFontSize(11f);
        document.getStyles().add(paragraphStyle);

        //给段落应用段落样式
        for(int i = 0; i< section.getParagraphs().getCount(); i++){
            section.getParagraphs().get(i).applyStyle("style");
        }

        //保存结果文档
        document.saveToFile("Muti-Column Document-zh.docx", FileFormat.Docx_2013);

    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题