Java: Add Headers and Footers to Excel

2022-03-11 08:13:00 Written by Koohji

Headers and footers in Excel are the text or images placed at the top and bottom of each page, respectively. These texts/images give basic information about the pages or document, such as the file name, company logo, page number, date/time, and so on. In this article, you will learn how to programmatically add text, images, as well as fields (like page number) to Excel headers or footers using Spire.XLS for Java.

Spire.XLS for Java provides the PageSetup class to work with the page setup in Excel including headers and footers. Specifically, it offers the setLeftHeader() method, setCenterHeader() method, setRightHeader() method, setLeftFooter() method, etc. to add content to the left section, center section and right section of a header or footer. To add fields to headers or footers, or to apply formatting to text, you'll need to use the scripts listed in the following table.

Script Description
&P The current page numbers.
&N The total number of pages.
&D The current data.
&T The current time.
&G A picture.
&A The worksheet name.
&F The file name.
&B Make text bold.
&I Italicize text.
&U Underline text.
&"font name" Represents a font name, for example, &"Arial".
& + Integer Represents font size, for example, &12.
&K + Hex color code Represents font color, for example, &KFF0000.

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>

Add Images and Formatted Text to Header

The steps to add images and formatted text an Excel header using Spire.XLS for Java are as follows.

  • Create a Workbook object.
  • Load a sample Excel file using Workbook.loadFromFile() method.
  • Get a specific worksheet using Workbook.getWorksheets().get() method.
  • Load an image using ImageIO.read() method.
  • Set the image as the image source of the header’s left section using PageSetup.setLeftHeaderImage() method.
  • Display image in the left header section by passing the value “&G” to PageSetup.setLeftHeader() method as a parameter.
  • Save the workbook to another Excel file using Workbook.saveToFile() method.
  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;

public class AddImageAndTextToHeader {

    public static void main(String[] args) throws IOException {

        //Create a Workbook object
        Workbook wb = new Workbook();

        //Load an existing Excel file
        wb.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.xlsx");

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

        //Load an image
        BufferedImage bufferedImage = ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Desktop\\your-logo.png"));

        //Add image to header’s left section
        sheet.getPageSetup().setLeftHeaderImage(bufferedImage,0.4f);
        sheet.getPageSetup().setLeftHeader("&G");

        //Add formatted text to header’s right section
        sheet.getPageSetup().setRightHeader("&\"Calibri\"&B&10&K4253E2X Information Technology, Inc.  \n www.xxx.com");

        //Save the file
        wb.saveToFile("output/Header.xlsx", ExcelVersion.Version2016);
    }
}

Java: Add Headers and Footers to Excel

Add the Current Date and Page Number to Footer

The following are the steps to add the current date and page number to an Excel footer using Spire.XLS for Java.

  • Create a Workbook object.
  • Load a sample Excel file using Workbook.loadFromFile() method.
  • Get a specific worksheet using Workbook.getWorksheets.get() method.
  • Add page numbers with formatting to the footer’s left section by passing the value “&\"Calibri\"&B&10&K4253E2Page &P” to PageSetup.setLeftFooter() method.  You can customize the page numbers’ formatting according to your preference.
  • Add the current date to the footer’s right section by passing the value “&\"Calibri\"&B&10&K4253E2&D” to PageSetup.setRightFooter() method. Likewise, you can change the appearance of the date string as desired.
  • Save the workbook to another Excel file using Workbook.saveToFile() method.
  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet; 

public class AddDateAndPageNumberToFooter {

    public static void main(String[] args) {

        //Create a Workbook object
        Workbook wb = new Workbook();

        //Load an existing Excel file
        wb.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.xlsx");

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

        //Add page number to footer's left section
        sheet.getPageSetup().setLeftFooter("&\"Calibri\"&B&10&K4253E2Page &P");

        //Add current date to footer's right section
        sheet.getPageSetup().setRightFooter("&\"Calibri\"&B&10&K4253E2&D");

        //Save the file
        wb.saveToFile("output/Footer.xlsx", ExcelVersion.Version2016);
    }
}

Java: Add Headers and Footers to 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.

Add Data Table to Excel Chart in Java

2020-02-12 09:21:04 Written by Koohji

In Excel, we could use charts to visualize and compare data. However, once the charts are created, it becomes much difficult for us to read the data precisely from charts, adding a data table below the chart is a good solution. This article is going to introduce how to add a data table to an Excel chart in Java using Spire.XLS for Java.

import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;

public class AddDataTableToChart {
    public static void main(String[] args){
        //Create a new workbook
        Workbook workbook = new Workbook();
        //Get the first worksheet
        Worksheet sheet = workbook.getWorksheets().get(0);
        //Set sheet name
        sheet.setName("Demo");

        //Add Data to the sheet
        sheet.getRange().get("A1").setValue("Month");
        sheet.getRange().get("A2").setValue("Jan.");
        sheet.getRange().get("A3").setValue("Feb.");
        sheet.getRange().get("A4").setValue("Mar.");
        sheet.getRange().get("A5").setValue("Apr.");
        sheet.getRange().get("A6").setValue("May.");
        sheet.getRange().get("A7").setValue("Jun.");
        sheet.getRange().get("B1").setValue("Peter");
        sheet.getRange().get("B2").setNumberValue(3.3);
        sheet.getRange().get("B3").setNumberValue(2.5);
        sheet.getRange().get("B4").setNumberValue(2.0);
        sheet.getRange().get("B5").setNumberValue(3.7);
        sheet.getRange().get("B6").setNumberValue(4.5);
        sheet.getRange().get("B7").setNumberValue(4.0);
        sheet.getRange().get("C1").setValue("George");
        sheet.getRange().get("C2").setNumberValue(3.8);
        sheet.getRange().get("C3").setNumberValue(3.2);
        sheet.getRange().get("C4").setNumberValue(1.7);
        sheet.getRange().get("C5").setNumberValue(3.5);
        sheet.getRange().get("C6").setNumberValue(4.5);
        sheet.getRange().get("C7").setNumberValue(4.3);
        sheet.getRange().get("D1").setValue("Macbeth");
        sheet.getRange().get("D2").setNumberValue(3.0);
        sheet.getRange().get("D3").setNumberValue(2.8);
        sheet.getRange().get("D4").setNumberValue(3.5);
        sheet.getRange().get("D5").setNumberValue(2.3);
        sheet.getRange().get("D6").setNumberValue(3.3);
        sheet.getRange().get("D7").setNumberValue(3.8);

        //Add a chart to the sheet
        Chart chart = sheet.getCharts().add(ExcelChartType.ColumnClustered);
        //Set chart data
        chart.setDataRange(sheet.getRange().get("B1:D7"));
        chart.setSeriesDataFromRange(false);
        //Set chart position
        chart.setTopRow(8);
        chart.setBottomRow(28);
        chart.setLeftColumn(3);
        chart.setRightColumn(11);
        //Set chart title
        chart.setChartTitle("Chart with Data Table");
        chart.getChartTitleArea().isBold(true);
        chart.getChartTitleArea().setSize(12);
        //Set category labels for the first series of the chart
        ChartSerie cs1 = chart.getSeries().get(0);
        cs1.setCategoryLabels(sheet.getRange().get("A2:A7"));

        //Add data table to the chart
        chart.hasDataTable(true);

        //Save the result file
        workbook.saveToFile("AddDataTable.xlsx", ExcelVersion.Version2010);
    }
}

Output:

Add Data Table to Excel Chart in Java

Adjusting row heights and column widths allows users to optimize the display of their data in a spreadsheet. Whether you're working with a large dataset or preparing a report, customizing these dimensions can help ensure that your information is presented clearly and concisely. Excel provides several ways to change row height and column width, including manual adjustments and automatic fitting options.

In this article, you will learn how to programmatically change row height and column width in Excel in Java using the Spire.XLS for Java library.

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>

Change Row Height and Column Width for a Specific Row and Column

Spire.XLS for Java provides the Worksheet.setRowHeight() and Worksheet.setColumnWidth() methods for adjusting the height of a specific row and the width of a specific column in a worksheet. Here are the detailed steps to accomplish this task.

  • Create a Workbook object.
  • Load an Excel document from a given file path.
  • Get a specific worksheet from the workbook.
  • Change the height of a specific row using Worksheet.setRowHeight() method.
  • Change the width of a specific column using Worksheet.setColumnWidth() method.
  • Save the workbook to a different Excel file.
  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class SetRowHeightAndColumnWidth {

    public static void main(String[] args) {

        // Create a Workbook object
        Workbook workbook = new Workbook();

        // Load an Excel document
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

        // Get a specific worksheet
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // Set the height of a selected row to 20
        worksheet.setRowHeight(1,20);

        // Set the width of a selected column to 30
        worksheet.setColumnWidth(4, 30);

        //Save to file.
        workbook.saveToFile("output/SetHeightAndWidth.xlsx", ExcelVersion.Version2016);
        
        // Dispose resources
        workbook.dispose();
    }
}

Change Row Height and Column Width for All Rows and Columns

To modify the row height and column width for all rows and columns in a worksheet, you can utilize the Worksheet.setDefaultRowHeight() and Worksheet.setDefaultColumnWidth() methods. The following are the detailed steps.

  • Create a Workbook object.
  • Load an Excel document from a given file path.
  • Get a specific worksheet from the workbook.
  • Change the height for all rows using Worksheet.setDefaultRowHeight() method.
  • Change the width for all columns using Worksheet.setDefaultColumnWidth() method.
  • Save the workbook to a different Excel file.
  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class SetRowHeightColumnWidthForAll {

    public static void main(String[] args) {

        // Create a Workbook object
        Workbook workbook = new Workbook();

        // Load an Excel document
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

        // Get a specific worksheet
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // Set the default row height to 18
        worksheet.setDefaultRowHeight(18);

        // Set the default column width to 15
        worksheet.setDefaultColumnWidth(15);
        
        //Save to file.
        workbook.saveToFile("output/SetHeightAndWidthForAll.xlsx", ExcelVersion.Version2016);

        // Dispose resources
        workbook.dispose();
    }
}

Automatically Adjust Row Height and Column Width for a Specific Row and Column

To automatically adjust the row height and column width to fit the content of a specific row and column in a worksheet, you can use the Worksheet.autoFitRow() and Worksheet.autoFitColumn() methods. The steps to autofit row height and column width are as follows.

  • Create a Workbook object.
  • Load an Excel document from a given file path.
  • Get a specific worksheet from the workbook.
  • Automatically adjust the height of a specific row using Worksheet.autoFitRow() method.
  • Automatically adjust the width of a specific column using Worksheet.autoFitColumn() method.
  • Save the workbook to a different Excel file.
  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class AutoFitRowHeightAndColumnWidth {

    public static void main(String[] args) {

        // Create a Workbook object
        Workbook workbook = new Workbook();

        // Load an Excel document
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

        // Get a specific worksheet
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // Autofit the first row 
        worksheet.autoFitRow(1);

        // Autofit the second column
        worksheet.autoFitColumn(2);

        // Save the document
        workbook.saveToFile("output/AutoFit.xlsx", ExcelVersion.Version2016);

        // Dispose resources
        workbook.dispose();
    }
}

Automatically Adjust Row Height and Column Width in a Cell Range

To automatically adjust the row height and column width within a specific cell range in your worksheet, you can utilize the CellRange.autoFitRows() and CellRange.autoFitColumns() methods respectively. Below are the detailed steps.

  • Create a Workbook object.
  • Load an Excel document from a given file path.
  • Get a specific worksheet from the workbook.
  • Get a cell range using Worksheet.getCellRange() method.
  • Automatically adjust the row height in the range using CellRange.autoFitRow() method.
  • Automatically adjust the column width in the range using CellRange.autoFitColumn() method.
  • Save the workbook to a different Excel file.
  • Java
import com.spire.xls.CellRange;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class AutoFitInRange {

    public static void main(String[] args) {

        // Create a Workbook object
        Workbook workbook = new Workbook();

        // Load an Excel document
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

        // Get a specific worksheet
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // Get the used range
        CellRange cellRange = worksheet.getAllocatedRange();

        // Or, you can get a desired cell range
        // CellRange cellRange = worksheet.getCellRange(1,1,6,4)

        // Autofit rows and columns in the range
        cellRange.autoFitRows();
        cellRange.autoFitColumns();

        // Save the document
        workbook.saveToFile("output/AutoFit.xlsx", ExcelVersion.Version2016);

        // Dispose resources
        workbook.dispose();
    }
}

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 53