Creating a table of contents in a Word document can help readers quickly understand the structure and content of the document, thereby enhancing its readability. The creation of a table of contents also aids authors in organizing the document's content, ensuring a clear structure and strong logical flow. When modifications or additional content need to be made to the document, the table of contents can help authors quickly locate the sections that require editing. This article will explain how to use Spire.Doc for Java to create a table of contents for a newly created Word document in a Java project.

Install Spire.Doc for Java

First, you're required to add the Spire.Doc.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>14.1.3</version>
    </dependency>
</dependencies>

Java Create a Table Of Contents Using Heading Styles

In Spire.Doc, creating a table of contents using heading styles is the default method for generating a table of contents. By applying different levels of heading styles to sections and subsections in the document, the table of contents is automatically generated. Here are the detailed steps:

  • Create a Document object.
  • Add a section using the Document.addSection() method.
  • Add a paragraph using the Section.addParagraph() method.
  • Create a table of contents object using the Paragraph.appendTOC(int lowerLevel, int upperLevel) method.
  • Create a CharacterFormat character format object and set the font.
  • Apply a heading style to the paragraph using the Paragraph.applyStyle(BuiltinStyle.Heading_1) method.
  • Add text content using the Paragraph.appendText() method.
  • Set character formatting for the text using the TextRange.applyCharacterFormat() method.
  • Update the table of contents using the Document.updateTableOfContents() method.
  • Save the document using the Document.saveToFile() method.
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.formatting.*;

public class CreateTOCByHeadingStyle {
    public static void main(String[] args) {
        // Create a new Document object
        Document doc = new Document();

        // Add a section to the document
        Section section = doc.addSection();

        // Add a table of contents paragraph
        Paragraph TOCparagraph = section.addParagraph();
        TOCparagraph.appendTOC(1, 3);

        // Create a character format object and set the font
        CharacterFormat characterFormat1 = new CharacterFormat(doc);
        characterFormat1.setFontName("Microsoft YaHei");

        // Create another character format object and set the font and font size
        CharacterFormat characterFormat2 = new CharacterFormat(doc);
        characterFormat2.setFontName("Microsoft YaHei");
        characterFormat2.setFontSize(12);

        // Add a paragraph with Heading 1 style
        Paragraph paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(BuiltinStyle.Heading_1);

        // Add text and apply character format
        TextRange textRange1 = paragraph.appendText("Overview");
        textRange1.applyCharacterFormat(characterFormat1);

        // Add regular content
        paragraph = section.getBody().addParagraph();
        TextRange textRange2 = paragraph.appendText("Spire.Doc for Java is a professional Word API that empowers Java applications to create, convert, manipulate and print Word documents without dependency on Microsoft Word.");
        textRange2.applyCharacterFormat(characterFormat2);

        // Add a paragraph with Heading 1 style
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(BuiltinStyle.Heading_1);
        textRange1 = paragraph.appendText("MAIN FUNCTION");
        textRange1.applyCharacterFormat(characterFormat1);

        // Add a paragraph with Heading 2 style
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(BuiltinStyle.Heading_2);
        textRange1 = paragraph.appendText("Only Spire.Doc for Java, No Microsoft Office");
        textRange1.applyCharacterFormat(characterFormat1);

        // Add regular content
        paragraph = section.getBody().addParagraph();
        textRange2 = paragraph.appendText("Spire.Doc for Java is a totally independent Word component, Microsoft Office is not required in order to use Spire.Doc for Java.");
        textRange2.applyCharacterFormat(characterFormat2);

        // Add a paragraph with Heading 3 style
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(BuiltinStyle.Heading_3);
        textRange1 = paragraph.appendText("Word Versions");
        textRange1.applyCharacterFormat(characterFormat1);
        paragraph = section.getBody().addParagraph();
        textRange2 = paragraph.appendText("Word97-03  Word2007  Word2010  Word2013  Word2016  Word2019");
        textRange2.applyCharacterFormat(characterFormat2);

        // Add a paragraph with Heading 2 style
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(BuiltinStyle.Heading_2);
        textRange1 = paragraph.appendText("High Quality File Conversion");
        textRange1.applyCharacterFormat(characterFormat1);

        // Add regular content
        paragraph = section.getBody().addParagraph();
        textRange2 = paragraph.appendText("Spire.Doc for Java allows converting popular file formats like HTML, RTF, ODT, TXT, WordML, WordXML to Word and exporting Word to commonly used file formats such as PDF, XPS, Image, EPUB, HTML, TXT, ODT, RTF, WordML, WordXML in high quality. Moreover, conversion between Doc and Docx is supported as well.");
        textRange2.applyCharacterFormat(characterFormat2);

        // Add a paragraph with Heading 2 style
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(BuiltinStyle.Heading_2);
        textRange1 = paragraph.appendText("Support a Rich Set of Word Elements");
        textRange1.applyCharacterFormat(characterFormat1);

        // Add regular content
        paragraph = section.getBody().addParagraph();
        textRange2 = paragraph.appendText("Spire.Doc for Java supports a rich set of Word elements, including section, header, footer, footnote, endnote, paragraph, list, table, text, TOC, form field, mail merge, hyperlink, bookmark, watermark, image, style, shape, textbox, ole, WordArt, background settings, digital signature, document encryption and many more.");
        textRange2.applyCharacterFormat(characterFormat2);

        // Update the table of contents
        doc.updateTableOfContents();

        // Save the document
        doc.saveToFile("Table of Contents Created Using Heading Styles.docx", FileFormat.Docx_2016);

        // Dispose of resources
        doc.dispose();
    }
}

Java: Create a Table Of Contents for a Newly Created Word Document

Java Create a Table Of Contents Using Outline Level Styles

You can also use outline level styles to create a table of contents in a Word document. In Spire.Doc, by setting the OutlineLevel property of a paragraph, you can specify the hierarchical style of the paragraph in the outline. Then, by calling the TableOfContent.setTOCLevelStyle() method, you can apply these outline level styles to the generation rules of the table of contents. Here are the detailed steps:

  • Create a Document object.
  • Add a section using the Document.addSection() method.
  • Create a ParagraphStyle object and set the outline level using ParagraphStyle.getParagraphFormat().setOutlineLevel(OutlineLevel.Level_1).
  • Add the created ParagraphStyle object to the document using Document.getStyles().add() method.
  • Add a paragraph using Section.addParagraph() method.
  • Create a table of contents object using Paragraph.appendTOC(int lowerLevel, int upperLevel) method.
  • Set the default setting for creating the table of contents using heading styles to false, TableOfContent.setUseHeadingStyles(false).
  • Apply the outline level styles to the table of contents rules using TableOfContent.setTOCLevelStyle(int levelNumber, string styleName) method.
  • Create a CharacterFormat object and set the font.
  • Apply the style to the paragraph using Paragraph.applyStyle(ParagraphStyle.getName()) method.
  • Add text content using Paragraph.appendText() method.
  • Apply character formatting to the text using TextRange.applyCharacterFormat() method.
  • Update the table of contents using Document.updateTableOfContents() method.
  • Save the document using Document.saveToFile() method.
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.formatting.*;

public class CreateTOCByOutlineLevelStyle {
    public static void main(String[] args) {
        // Create a new Document object
        Document doc = new Document();
        Section section = doc.addSection();

        // Define Outline Level 1
        ParagraphStyle titleStyle1 = new ParagraphStyle(doc);
        titleStyle1.setName("T1S");
        titleStyle1.getParagraphFormat().setOutlineLevel(OutlineLevel.Level_1);
        titleStyle1.getCharacterFormat().setBold(true);
        titleStyle1.getCharacterFormat().setFontName("Microsoft YaHei");
        titleStyle1.getCharacterFormat().setFontSize(18f);
        titleStyle1.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Left);
        doc.getStyles().add(titleStyle1);

        // Define Outline Level 2
        ParagraphStyle titleStyle2 = new ParagraphStyle(doc);
        titleStyle2.setName("T2S");
        titleStyle2.getParagraphFormat().setOutlineLevel(OutlineLevel.Level_2);
        titleStyle2.getCharacterFormat().setBold(true);
        titleStyle2.getCharacterFormat().setFontName("Microsoft YaHei");
        titleStyle2.getCharacterFormat().setFontSize(16f);
        titleStyle2.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Left);
        doc.getStyles().add(titleStyle2);

        // Define Outline Level 3
        ParagraphStyle titleStyle3 = new ParagraphStyle(doc);
        titleStyle3.setName("T3S");
        titleStyle3.getParagraphFormat().setOutlineLevel(OutlineLevel.Level_3);
        titleStyle3.getCharacterFormat().setBold(true);
        titleStyle3.getCharacterFormat().setFontName("Microsoft YaHei");
        titleStyle3.getCharacterFormat().setFontSize(14f);
        titleStyle3.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Left);
        doc.getStyles().add(titleStyle3);

        // Add Table of Contents paragraph
        Paragraph TOCparagraph = section.addParagraph();
        TableOfContent toc = TOCparagraph.appendTOC(1, 3);
        toc.setUseHeadingStyles(false);
        toc.setUseHyperlinks(true);
        toc.setUseTableEntryFields(false);
        toc.setRightAlignPageNumbers(true);
        toc.setTOCLevelStyle(1, titleStyle1.getName());
        toc.setTOCLevelStyle(2, titleStyle2.getName());
        toc.setTOCLevelStyle(3, titleStyle3.getName());

        // Define Character Format
        CharacterFormat characterFormat = new CharacterFormat(doc);
        characterFormat.setFontName("Microsoft YaHei");
        characterFormat.setFontSize(12);

        // Add paragraph and apply Outline Level Style 1
        Paragraph paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(titleStyle1.getName());
        paragraph.appendText("Overview");

        // Add paragraph and set text content
        paragraph = section.getBody().addParagraph();
        TextRange textRange = paragraph.appendText("Spire.Doc for Java is a professional Word API that empowers Java applications to create, convert, manipulate and print Word documents without dependency on Microsoft Word.");
        textRange.applyCharacterFormat(characterFormat);

        // Add paragraph and apply Outline Level Style 1
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(titleStyle1.getName());
        paragraph.appendText("MAIN FUNCTION");

        // Add paragraph and apply Outline Level Style 2
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(titleStyle2.getName());
        paragraph.appendText("Only Spire.Doc for Java, No Microsoft Office");

        // Add paragraph and set text content
        paragraph = section.getBody().addParagraph();
        textRange = paragraph.appendText("Spire.Doc for Java is a totally independent Word component, Microsoft Office is not required in order to use Spire.Doc for Java.");
        textRange.applyCharacterFormat(characterFormat);

        // Add paragraph and apply Outline Level Style 3
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(titleStyle3.getName());
        paragraph.appendText("Word Versions");

        // Add paragraph and set text content
        paragraph = section.getBody().addParagraph();
        textRange = paragraph.appendText("Word97-03  Word2007  Word2010  Word2013  Word2016  Word2019");
        textRange.applyCharacterFormat(characterFormat);

        // Add paragraph and apply Outline Level Style 2
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(titleStyle2.getName());
        paragraph.appendText("High Quality File Conversion");

        // Add paragraph and set text content
        paragraph = section.getBody().addParagraph();
        textRange = paragraph.appendText("Spire.Doc for Java allows converting popular file formats like HTML, RTF, ODT, TXT, WordML, WordXML to Word and exporting Word to commonly used file formats such as PDF, XPS, Image, EPUB, HTML, TXT, ODT, RTF, WordML, WordXML in high quality. Moreover, conversion between Doc and Docx is supported as well.");
        textRange.applyCharacterFormat(characterFormat);

        // Add paragraph and apply Outline Level Style 2
        paragraph = section.getBody().addParagraph();
        paragraph.applyStyle(titleStyle2.getName());
        paragraph.appendText("Support a Rich Set of Word Elements");

        // Add paragraph and set text content
        paragraph = section.getBody().addParagraph();
        textRange = paragraph.appendText("Spire.Doc for Java supports a rich set of Word elements, including section, header, footer, footnote, endnote, paragraph, list, table, text, TOC, form field, mail merge, hyperlink, bookmark, watermark, image, style, shape, textbox, ole, WordArt, background settings, digital signature, document encryption and many more.");
        textRange.applyCharacterFormat(characterFormat);

        // Update the table of contents
        doc.updateTableOfContents();

        // Save the document
        doc.saveToFile("Creating Table of Contents with Outline Level Styles.docx", FileFormat.Docx_2016);

        // Dispose of resources
        doc.dispose();
    }
}

Java: Create a Table Of Contents for a Newly Created Word Document

Java Create a Table Of Contents Using Image Captions

Using the Spire.Doc library, you can create a table of contents based on image titles using the TableOfContent tocForImage = new TableOfContent(Document, " \\h \\z \\c \"Image\"") method. Here are the detailed steps:

  • Create a Document object.
  • Add a section using the Document.addSection() method.
  • Create a table of contents object TableOfContent tocForImage = new TableOfContent(Document, " \\h \\z \\c \"Image\"") and specify the style of the table of contents.
  • Add a paragraph using the Section.addParagraph() method.
  • Add the table of contents object to the paragraph using the Paragraph.getItems().add(tocForImage) method.
  • Add a field separator using the Paragraph.appendFieldMark(FieldMarkType.Field_Separator) method.
  • Add the text content "TOC" using the Paragraph.appendText("TOC") method.
  • Add a field end mark using the Paragraph.appendFieldMark(FieldMarkType.Field_End) method.
  • Add an image using the Paragraph.appendPicture() method.
  • Add a paragraph for the image title, including product information and formatting, using the DocPicture.addCaption() method.
  • Update the table of contents to reflect changes in the document using the Document.updateTableOfContents(tocForImage) method.
  • Save the document using the Document.saveToFile() method.
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;

public class CreateTOCByImageCaption {
    public static void main(String[] args) {
        // Create a new document object
        Document doc = new Document();

        // Add a section to the document
        Section section = doc.addSection();

        // Create a table of content object for images
        TableOfContent tocForImage = new TableOfContent(doc, " \\h \\z \\c \"Images\"");

        // Add a paragraph to the section
        Paragraph tocParagraph = section.getBody().addParagraph();

        // Add the table of content object to the paragraph
        tocParagraph.getItems().add(tocForImage);

        // Add a field separator
        tocParagraph.appendFieldMark(FieldMarkType.Field_Separator);

        // Add text content
        tocParagraph.appendText("TOC");

        // Add a field end mark
        tocParagraph.appendFieldMark(FieldMarkType.Field_End);

        // Add a blank paragraph to the section
        section.getBody().addParagraph();

        // Add a paragraph to the section
        Paragraph paragraph = section.getBody().addParagraph();

        // Add an image
        DocPicture docPicture = paragraph.appendPicture("images/Doc-Java.png");
        docPicture.setWidth(100);
        docPicture.setHeight(100);

        // Add a paragraph for the image caption
        Paragraph pictureCaptionParagraph = (Paragraph) docPicture.addCaption("Images", CaptionNumberingFormat.Number, CaptionPosition.Below_Item);
        pictureCaptionParagraph.appendText("  Spire.Doc for Java Product ");
        pictureCaptionParagraph.getFormat().setAfterSpacing(20);

        // Continue adding paragraphs to the section
        paragraph = section.getBody().addParagraph();
        docPicture = paragraph.appendPicture("images/PDF-Java.png");
        docPicture.setWidth(100);
        docPicture.setHeight(100);
        pictureCaptionParagraph = (Paragraph) docPicture.addCaption("Images", CaptionNumberingFormat.Number, CaptionPosition.Below_Item);
        pictureCaptionParagraph.appendText("  Spire.PDF for Java Product ");
        pictureCaptionParagraph.getFormat().setAfterSpacing(20);
        paragraph = section.getBody().addParagraph();
        docPicture = paragraph.appendPicture("images/XLS-Java.png");
        docPicture.setWidth(100);
        docPicture.setHeight(100);
        pictureCaptionParagraph = (Paragraph) docPicture.addCaption("Images", CaptionNumberingFormat.Number, CaptionPosition.Below_Item);
        pictureCaptionParagraph.appendText("  Spire.XLS for Java Product ");
        pictureCaptionParagraph.getFormat().setAfterSpacing(20);
        paragraph = section.getBody().addParagraph();
        docPicture = paragraph.appendPicture("images/PPT-Java.png");
        docPicture.setWidth(100);
        docPicture.setHeight(100);
        pictureCaptionParagraph = (Paragraph) docPicture.addCaption("Images", CaptionNumberingFormat.Number, CaptionPosition.Below_Item);
        pictureCaptionParagraph.appendText("  Spire.Presentation for Java Product ");

        // Update the table of contents
        doc.updateTableOfContents(tocForImage);

        // Save the document to a file
        doc.saveToFile("CreateTOCWithImageCaptions.docx", FileFormat.Docx_2016);

        // Dispose of the document object
        doc.dispose();
    }
}

Java: Create a Table Of Contents for a Newly Created Word Document

Java Create a Table Of Contents Using Table Captions

You can also create a table of contents using table titles by the method TableOfContent tocForImage = new TableOfContent(Document, " \\h \\z \\c \"Table\""). Here are the detailed steps:

  • Create a Document object.
  • Add a section using the Document.addSection() method.
  • Create a table of contents object TableOfContent tocForTable = new TableOfContent(Document, " \\h \\z \\c \"Table\"") and specify the style of the table of contents.
  • Add a paragraph using the Section.addParagraph() method.
  • Add the table of contents object to the paragraph using the Paragraph.getItems().add(tocForTable) method.
  • Add a field separator using the Paragraph.appendFieldMark(FieldMarkType.Field_Separator) method.
  • Add the text "TOC" using the Paragraph.appendText("TOC") method.
  • Add a field end mark using the Paragraph.appendFieldMark(FieldMarkType.Field_End) method.
  • Add a table using the Section.addTable() method and set the number of rows and columns using the Table.resetCells(int rowsNum, int columnsNum) method.
  • Add a caption paragraph to the table using the Table.addCaption() method, including product information and formatting.
  • Update the table of contents to reflect changes in the document using the Document.updateTableOfContents(tocForTable) method.
  • Save the document using the Document.saveToFile() method.
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;

public class CreateTOCByTableCaption {
    public static void main(String[] args) {
        // Create a new document
        Document doc = new Document();

        // Add a section to the document
        Section section = doc.addSection();

        // Create a table of content object
        TableOfContent tocForTable = new TableOfContent(doc, " \\h \\z \\c \"Table\"");

        // Add a paragraph in the section to place the table of content
        Paragraph tocParagraph = section.getBody().addParagraph();
        tocParagraph.getItems().add(tocForTable);
        tocParagraph.appendFieldMark(FieldMarkType.Field_Separator);
        tocParagraph.appendText("TOC");
        tocParagraph.appendFieldMark(FieldMarkType.Field_End);

        // Add two empty paragraphs in the section
        section.getBody().addParagraph();
        section.getBody().addParagraph();

        // Add a table in the section
        Table table = section.getBody().addTable(true);
        table.resetCells(1, 3);

        // Add a title for the table
        Paragraph tableCaptionParagraph = (Paragraph) table.addCaption("Table", CaptionNumberingFormat.Number, CaptionPosition.Below_Item);
        tableCaptionParagraph.appendText("  One row, three columns");
        tableCaptionParagraph.getFormat().setAfterSpacing(18);

        // Add a new table in the section
        table = section.getBody().addTable(true);
        table.resetCells(3, 3);

        // Add a title for the second table
        tableCaptionParagraph = (Paragraph) table.addCaption("Table", CaptionNumberingFormat.Number, CaptionPosition.Below_Item);
        tableCaptionParagraph.appendText("  Three rows, three columns");
        tableCaptionParagraph.getFormat().setAfterSpacing(18);

        // Add another new table in the section
        table = section.getBody().addTable(true);
        table.resetCells(5, 3);

        // Add a title for the third table
        tableCaptionParagraph = (Paragraph) table.addCaption("Table", CaptionNumberingFormat.Number, CaptionPosition.Below_Item);
        tableCaptionParagraph.appendText("  Five rows, three columns");

        // Update the table of contents
        doc.updateTableOfContents(tocForTable);

        // Save the document to a specified file
        doc.saveToFile("CreateTableOfContentsUsingTableCaptions.docx", FileFormat.Docx_2016);

        // Dispose of resources
        doc.dispose();
    }
}

Java: Create a Table Of Contents for a Newly Created Word Document

Apply for a Temporary License

If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.

Java: Add Gutters on Word Document Pages

2024-04-08 01:30:54 Written by Koohji

Adding gutters on Word document pages can assist users in better page layout and design, especially when preparing documents for printing or creating books that require gutter. Gutter can indicate the gutter position on the page, helping users to design with appropriate blank areas to avoid text or images being cut off. By setting gutter, users can have better control over the appearance and layout of the document, ensuring that the final output meets the expected gutter requirements, enhancing the professionalism and readability of the document. This article shows how to add gutters on Word document pages by programming using Spire.Doc for Java.

Install Spire.Doc for Java

First, you're required to add the Spire.Doc.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>14.1.3</version>
    </dependency>
</dependencies>

Add a Gutter at the Top of a Word Document Page in Java

In a Word document, you can set section.getPageSetup().isTopGutter(true) to place the gutter at the top of the page. By default, the gutter area is displayed as blank without any content. This example also includes steps on how to add content, such as the dash symbol, to the gutter area to customize content around the gutter. Here are the detailed steps:

  • Create a Document object.
  • Load a document using the Document.loadFromFile() method.
  • Iterate through all sections of the document using a for loop and Document.getSections().
  • Set Section.getPageSetup().isTopGutter(true) to display the gutter at the top of the page.
  • Use Section.getPageSetup().setGutter() to set the width of the gutter.
  • Call the custom addTopGutterContent() method to add content to the gutter area.
  • Save the document using the Document.saveToFile() method.
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.formatting.CharacterFormat;
import java.awt.*;

public class AddTopGutter {
    public static void main(String[] args) {
        // Create a document object
        Document document = new Document();

        // Load the document
        document.loadFromFile("Sample1.docx");

        // Iterate through all sections of the document
        for (int i = 0; i < document.getSections().getCount(); i++) {
            // Get the current section
            Section section = document.getSections().get(i);

            // Set whether to add a gutter at the top of the page to true
            section.getPageSetup().isTopGutter(true);

            // Set the width of the gutter to 100f
            section.getPageSetup().setGutter(100f);

            // Call the method to add content to the top gutter
            addTopGutterContent(section);
        }

        // Save the modified document to a file
        document.saveToFile("AddGutterOnTop.docx", FileFormat.Docx_2016);

        // Release document resources
        document.dispose();
    }

    // Method to add content to the top gutter
    static void addTopGutterContent(Section section) {
        // Get the header of the section
        HeaderFooter header = section.getHeadersFooters().getHeader();

        // Set the width of the text box to the width of the page
        float width = (float) section.getPageSetup().getPageSize().getWidth();

        // Set the height of the text box to 40
        float height = 40;

        // Add a text box to the header
        TextBox textBox = header.addParagraph().appendTextBox(width, height);

        // Set the text box without borders
        textBox.getFormat().setNoLine(true);

        // Set the vertical origin of the text box to the top margin area
        textBox.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);

        // Set the vertical position of the text box
        textBox.setVerticalPosition(140);

        // Set the horizontal alignment of the text box to left
        textBox.setHorizontalAlignment(ShapeHorizontalAlignment.Left);

        // Set the horizontal origin of the text box to the left margin area
        textBox.setHorizontalOrigin(HorizontalOrigin.Left_Margin_Area);

        // Set the text anchor to the bottom
        textBox.getFormat().setTextAnchor(ShapeVerticalAlignment.Bottom);

        // Set the text wrapping style to in front of text
        textBox.getFormat().setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text);

        // Set the text wrapping type to both sides
        textBox.getFormat().setTextWrappingType(TextWrappingType.Both);

        // Create a paragraph object
        Paragraph paragraph = new Paragraph(section.getDocument());

        // Set the paragraph alignment to center
        paragraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);

        // Create a font object
        Font font = new Font("SimSun", Font.PLAIN, 8);

        Graphics graphics = new java.awt.image.BufferedImage(1, 1, java.awt.image.BufferedImage.TYPE_INT_ARGB).getGraphics();
        graphics.setFont(font);
        FontMetrics fontMetrics = graphics.getFontMetrics();
        String text1 = " - ";
        int textWidth1 = fontMetrics.stringWidth(text1);
        int count = (int) (textBox.getWidth() / textWidth1);
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 1; i < count; i++) {
            stringBuilder.append(text1);
        }
        // Create a character format object
        CharacterFormat characterFormat = new CharacterFormat(section.getDocument());
        characterFormat.setFontName(font.getFontName());
        characterFormat.setFontSize(font.getSize());
        TextRange textRange = paragraph.appendText(stringBuilder.toString());
        textRange.applyCharacterFormat(characterFormat);

        // Add the paragraph to the text box
        textBox.getChildObjects().add(paragraph);
    }
}

Java: Add Gutters on Word document pages

Add a Gutter at the Left of a Word Document Page in Java

To set the gutter on the left side of the page, the key is to set Section.getPageSetup().isTopGutter(false). Here are the detailed steps:

  • Create a Document object.
  • Load a document using the Document.loadFromFile() method.
  • Iterate through all sections of the document using a for loop and Document.getSections().
  • Set Section.getPageSetup().isTopGutter(false) to display the gutter on the left side of the page.
  • Use Section.getPageSetup().setGutter() to set the width of the gutter.
  • Call the custom addLeftGutterContent() method to add content to the gutter area.
  • Save the document using the Document.saveToFile() method.
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.formatting.CharacterFormat;
import java.awt.*;

public class AddLeftGutter {
    public static void main(String[] args) {
        // Create a document object
        Document document = new Document();

        // Load the document
        document.loadFromFile("Sample1.docx");

        // Iterate through all sections of the document
        for (int i = 0; i < document.getSections().getCount(); i++) {
            // Get the current section
            Section section = document.getSections().get(i);

            // Set whether to add a gutter at the top of the page to false, it will be added to the left side of the page
            section.getPageSetup().isTopGutter(false);

            // Set the width of the gutter to 100f
            section.getPageSetup().setGutter(100f);

            // Call the method to add content to the left gutter
            AddLeftGutterContent (section);
        }

        // Save the modified document to a file
        document.saveToFile("AddGutterOnLeft.docx", FileFormat.Docx_2016);

        // Release document resources
        document.dispose();
    }

    // Method to add content to the left gutter
    static void AddLeftGutterContent(Section section) {
        // Get the header of the section
        HeaderFooter header = section.getHeadersFooters().getHeader();

        // Set the width of the text box to 40
        float width = 40;

        // Get the page height
        float height = (float) section.getPageSetup().getPageSize().getHeight();

        // Add a text box to the header
        TextBox textBox = header.addParagraph().appendTextBox(width, height);

        // Set the text box without borders
        textBox.getFormat().setNoLine(true);

        // Set the text direction in the text box from right to left
        textBox.getFormat().setLayoutFlowAlt(TextDirection.Right_To_Left);

        // Set the horizontal starting position of the text box
        textBox.setHorizontalOrigin(HorizontalOrigin.Left_Margin_Area);

        // Set the horizontal position of the text box
        textBox.setHorizontalPosition(140);

        // Set the vertical alignment of the text box to the top
        textBox.setVerticalAlignment(ShapeVerticalAlignment.Top);

        // Set the vertical origin of the text box to the top margin area
        textBox.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);

        // Set the text anchor to the top
        textBox.getFormat().setTextAnchor(ShapeVerticalAlignment.Top);

        // Set the text wrapping style to in front of text
        textBox.getFormat().setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text);

        // Set the text wrapping type to both sides
        textBox.getFormat().setTextWrappingType(TextWrappingType.Both);

        // Create a paragraph object
        Paragraph paragraph = new Paragraph(section.getDocument());

        // Set the paragraph alignment to center
        paragraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);

        // Create a font object, SimSun, size 8
        Font font = new Font("SimSun", Font.PLAIN, 8);

        Graphics graphics = new java.awt.image.BufferedImage(1, 1, java.awt.image.BufferedImage.TYPE_INT_ARGB).getGraphics();
        graphics.setFont(font);
        FontMetrics fontMetrics = graphics.getFontMetrics();
        String text1 = " - ";
        int textWidth1 = fontMetrics.stringWidth(text1);
        int count = (int) (textBox.getHeight() / textWidth1);
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 1; i < count ; i++) {
            stringBuilder.append(text1);
        }

        // Create a character format object
        CharacterFormat characterFormat = new CharacterFormat(section.getDocument());
        characterFormat.setFontName(font.getFontName());
        characterFormat.setFontSize(font.getSize());
        TextRange textRange = paragraph.appendText(stringBuilder.toString());
        textRange.applyCharacterFormat(characterFormat);

        // Add the paragraph to the text box
        textBox.getChildObjects().add(paragraph);
    }
}

Java: Add Gutters on Word document pages

Apply for a Temporary License

If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.

The Freeze Panes feature in Excel allows users to lock specific rows and columns while scrolling, ensuring that critical information remains visible regardless of the dataset's size. However, there are instances where unfreezing panes becomes necessary. Unfreezing rows and columns grants users the freedom to navigate large datasets seamlessly, facilitating comprehensive data analysis, editing, and formatting. the contents of frozen panes are often important information, and being able to obtain the range of frozen panes can facilitate easier access to this content. This article demonstrates how to use Spire.XLS for Java to unfreeze panes and obtain frozen rows and columns in Excel worksheets with Java code.

Install Spire.XLS for Java

First of all, you're required to add the Spire.Xls.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>15.12.15</version>
    </dependency>
</dependencies>

Unfreeze Panes in Excel Worksheets with Java

With Spire.XLS for Java, developers get a worksheet using Workbook.getWorksheets().get() method and unfreeze the panes using Worksheet.RemovePanes() method. The detailed steps for unfreezing panes in an Excel worksheet are as follows:

  • Create an object of Workbook class.
  • Load an Excel workbook using Workbook.loadFromFile() method.
  • Get a worksheet from the workbook using Workbook.getWorksheets().get() method.
  • Unfreeze panes in the worksheet using Worksheet.removePanes() method.
  • Save the workbook using Workbook.saveToFile() method.
  • Java
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class UnfreezePanes {
    public static void main(String[] args) {
        // Create an object of Workbook class
        Workbook wb = new Workbook();

        // Load an Excel workbook
        wb.loadFromFile("Sample.xlsx");

        // Get the first worksheet
        Worksheet sheet = wb.getWorksheets().get(0);

        // Unfreeze the panes
        sheet.removePanes();

        // Save the workbook
        wb.saveToFile("output/UnfreezePanes.xlsx");
        wb.dispose();
    }
}

Java: Unfreeze Panes and Get Frozen Panes in Excel

Obtain Frozen Rows and Columns in Excel Worksheets with Java

Spire.XLS for Java provides the Worksheet.getFreezePanes() method to get the row and column indexes of the frozen panes, which allows developers to conveniently extract, remove, or format the content of the frozen panes. The parameters obtained are in the format of an int list: [int rowIndex, int columnIndex]. For example, [1, 0] indicates that the first row is frozen.

The detailed steps for obtaining the row and column parameters of the frozen panes are as follows:

  • Create an object of Workbook class.
  • Load an Excel workbook using Workbook.loadFromFile() method.
  • Get the first worksheet using Workbook.getWorksheets().get() method.
  • Get the indexes of the frozen rows and columns using Worksheet.getFreezePanes() method.
  • Output the result.
  • Java
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class GetFrozenCellRange {
    public static void main(String[] args) {
        // Create an object of Document clas
        Workbook wb = new Workbook();

        // Load an Excel file
        wb.loadFromFile("Sample.xlsx");

        // Get the first worksheet
        Worksheet ws = wb.getWorksheets().get(0);

        // Get the indexes of the frozen rows and columns
        int[] index = ws.getFreezePanes();

        // Output the result
        System.out.println("Frozen Rows: " + index[0] + "\r\nFrozen Columns: " + index[1]);
        wb.dispose();
    }
}

Java: Unfreeze Panes and Get Frozen Panes in Excel

Apply for a Temporary License

If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.

Page 8 of 81
page 8