2

I already have the columns created. I would like to put a line between them, as is possible in Word.

Line Between

How do I set it using Apache POI?

CTColumns coluna1 = sectPr.addNewCols();
coluna1.setNum(BigInteger.valueOf(1));
CTColumns coluna2 = sectPr.addNewCols();
coluna2.setNum(BigInteger.valueOf(2));

1 Answer 1

4

That would be CTColumns.setSep. Up to Apache POI 4 this was a ON/OFF value of type org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff. From Apache POI 5 on it is 0(OFF) or 1(ON).

...
  //ctColumns.setSep(STOnOff.ON); // up to Apache POI 4
  ctColumns.setSep("1"); // from Apache POI 5 on 
...

Complete example:

import java.io.FileOutputStream;

import java.math.BigInteger;

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.BreakType;
import org.apache.poi.xwpf.usermodel.Borders;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTColumns;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTColumn;
//import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocGrid;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocGrid;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STSectionMark;

public class Word2ColumnPage {
 public static void main(String[] args) throws Exception {

  XWPFDocument document= new XWPFDocument();

  XWPFParagraph paragraph = document.createParagraph();
  XWPFRun run=paragraph.createRun();  
  run.setText("One column on top. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.");

  paragraph = document.createParagraph();

  //paragraph with section setting for one column section above
  paragraph = document.createParagraph();
  CTSectPr ctSectPr = paragraph.getCTP().addNewPPr().addNewSectPr();
  CTColumns ctColumns = ctSectPr.addNewCols();
  ctColumns.setNum(BigInteger.valueOf(1));

  //left column

  paragraph = document.createParagraph();
  run=paragraph.createRun();  
  run.setText("The left side");
  paragraph = document.createParagraph();
  run=paragraph.createRun();  
  run.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.");

  paragraph = document.createParagraph();

  // right column 

  //paragraph with column break
  paragraph = document.createParagraph();
  run=paragraph.createRun();  
  run.addBreak(BreakType.COLUMN);
  run=paragraph.createRun();  
  run.setText("The right side");

  paragraph = document.createParagraph();
  run=paragraph.createRun();  
  run.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.");

  paragraph = document.createParagraph();

  //paragraph with section break continuous for two column section above
  paragraph = document.createParagraph();
  ctSectPr = paragraph.getCTP().addNewPPr().addNewSectPr();
  ctSectPr.addNewType().setVal(STSectionMark.CONTINUOUS);
  ctColumns = ctSectPr.addNewCols();
  ctColumns.setNum(BigInteger.valueOf(2));
  //ctColumns.setEqualWidth(STOnOff.OFF);  // up to Apache POI 4
  ctColumns.setEqualWidth("0"); // from Apache POI 5 on 
  //ctColumns.setSep(STOnOff.ON); // up to Apache POI 4
  ctColumns.setSep("1"); // from Apache POI 5 on 
  CTColumn ctColumn = ctColumns.addNewCol();
  ctColumn.setW(BigInteger.valueOf(6000));
  ctColumn.setSpace(BigInteger.valueOf(300));
  ctColumn = ctColumns.addNewCol();
  ctColumn.setW(BigInteger.valueOf(3000));

  paragraph = document.createParagraph();
  run=paragraph.createRun();  
  run.setText("One column on bottom");

  paragraph = document.createParagraph();
  run=paragraph.createRun();  
  run.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.");

  //section setting continuous for one column section above
  CTDocument1 ctDocument = document.getDocument();
  CTBody ctBody = ctDocument.getBody();
  ctSectPr = ctBody.addNewSectPr();
  ctSectPr.addNewType().setVal(STSectionMark.CONTINUOUS);
  ctColumns = ctSectPr.addNewCols();
  ctColumns.setNum(BigInteger.valueOf(1));

  FileOutputStream out = new FileOutputStream("Word2ColumnPage.docx");  
  document.write(out);
  out.close();
  document.close();

 }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.