Java convert Excel to Word table
Tags: excel, word, table, java
Published: 2021-07-08 06:44:36

---
title: Java convert Excel to Word table
published: true
description: save Excel to word table
tags: excel, word, table, java
//cover_image: https://direct_url_to_image.jpg
---
This guide will show you how to convert Excel with font, styles and background color to word table in Java with the help of Spire.Office.

Installing Spire.office jar

If you create a Maven project, you can easily import the jar in your application using the following configurations. For non-Maven projects, download the [Office jar file](https://www.e-iceblue.com/Download/office-for-java.html) and add it as a dependency in your application.

```java
<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.office</artifactId>
        <version>4.6.6</version>
    </dependency>
</dependencies>
```

Firstly, view the effective screenshot of the Excel worksheet:

![Excel Sample](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9p5hlzz8g19qsb392xfe.png)

With Spire.XLS, we will get all the data and styles on the Excel worksheet and then use Spire.Doc to copy them to the word and generate a new word table. Here comes to the codes.

```java
import com.spire.doc.Document;
import com.spire.doc.Table;
import com.spire.doc.TableCell;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.VerticalAlignment;
import com.spire.doc.fields.TextRange;
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ExcelToWordTable {
    public static void main(String[] args) throws Exception {
        //Load the Sample workbook
        Workbook workbook = new Workbook();
        workbook.loadFromFile("Sample00.xlsx");
        //Get the first worksheet
        Worksheet sheet = workbook.getWorksheets().get(0);

        //Copy to Word 
        copyToWord(sheet.getAllocatedRange(), "output.docx");

    }

    public static void copyToWord(CellRange cell, String fPath) {
        //Add a table
        Document doc = new Document();
        Table table = doc.addSection().addTable(true);
        table.resetCells(cell.getRowCount(), cell.getColumnCount());
        //Copy the table contents
        for (int r = 1; r <= cell.getRowCount(); r++) {
            for (int c = 1; c <= cell.getColumnCount(); c++) {
                CellRange xCell = cell.get(r, c);
                CellRange mergeArea = xCell.getMergeArea();
                //merge cells
                if (mergeArea != null && mergeArea.getRow() == r && mergeArea.getColumn() == c) {
                    int rowIndex = mergeArea.getRow();
                    int columnIndex = mergeArea.getColumn();
                    int rowCount = mergeArea.getRowCount();
                    int columnCount = mergeArea.getColumnCount();

                    for (int m = 0; m < rowCount; m++) {
                        table.applyHorizontalMerge(rowIndex - 1 + m, columnIndex - 1, columnIndex + columnCount - 2);
                    }
                    table.applyVerticalMerge(columnIndex - 1, rowIndex - 1, rowIndex + rowCount - 2);
                }
                //Copy the contents
                TableCell wCell = table.getRows().get(r - 1).getCells().get(c - 1);
                if (!xCell.getDisplayedText().isEmpty()) {
                    TextRange textRange = wCell.addParagraph().appendText(xCell.getDisplayedText());
                    copyStyle(textRange, xCell, wCell);
                } else {
                    wCell.getCellFormat().setBackColor(xCell.getStyle().getColor());
                }
            }
        }
        doc.saveToFile(fPath,com.spire.doc.FileFormat.Docx);
}
        private static void copyStyle(TextRange wTextRange, CellRange xCell, TableCell wCell) {
            //Copy the font style
            wTextRange.getCharacterFormat().setTextColor(xCell.getStyle().getFont().getColor());
            wTextRange.getCharacterFormat().setFontSize((float) xCell.getStyle().getFont().getSize());
            wTextRange.getCharacterFormat().setFontName(xCell.getStyle().getFont().getFontName());
            wTextRange.getCharacterFormat().setBold(xCell.getStyle().getFont().isBold());
            wTextRange.getCharacterFormat().setItalic(xCell.getStyle().getFont().isItalic());
            //Copy the background
            wCell.getCellFormat().setBackColor(xCell.getStyle().getColor());
            //Copy the alignment style
            switch (xCell.getHorizontalAlignment()) {
                case Left:
                    wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Left);
                    break;
                case Center:
                    wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
                    break;
                case Right:
                    wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
                    break;
                default:
                    break;
            }
            switch (xCell.getVerticalAlignment()) {
                case Bottom:
                    wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Bottom);
                    break;
                case Center:
                    wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
                    break;
                case Top:
                    wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Top);
                    break;
                default:
                    break;
            }
        }
    }
```

Output of the Word Table：
 
![Excel to Word table](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/as2kqvi7y4p0z94gp97n.png)