Java将Excel转成Word文档

1. 引言

随着信息化的快速发展,数据处理和文档生成成为了各行各业中常见的任务。Java作为一种强大的编程语言,提供了丰富的库和工具来处理各种数据操作和文档生成任务。本文将介绍如何使用Java将Excel文件转换成Word文档,并提供相应的代码示例。

2. 准备工作

在开始之前,我们需要准备以下几个工具和库:

  • Java开发环境(JDK)
  • Apache POI库:用于操作Excel文件
  • Apache POI-OOXML库:用于操作Word文档
  • Apache Commons IO库:用于文件操作

请确保你已经正确安装了Java开发环境,并将所需的库添加到项目的依赖中。

3. Excel文件的读取

首先,我们需要读取Excel文件的内容。Apache POI库提供了丰富的API来操作Excel文件。

以下是一个简单的示例代码,演示如何读取Excel文件中的数据:

import org.apache.poi.ss.usermodel.*;

public class ExcelReader {
    public static void main(String[] args) {
        try {
            Workbook workbook = WorkbookFactory.create(new File("data.xlsx"));
            Sheet sheet = workbook.getSheetAt(0);

            for (Row row : sheet) {
                for (Cell cell : row) {
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                        case NUMERIC:
                            System.out.print(cell.getNumericCellValue() + "\t");
                            break;
                        // 其他类型的处理方式
                    }
                }
                System.out.println();
            }

            workbook.close();
        } catch (IOException | InvalidFormatException e) {
            e.printStackTrace();
        }
    }
}

上述代码首先打开Excel文件,然后获取第一个工作表(Sheet),遍历所有行和单元格,并根据单元格的类型进行相应的处理。

4. Word文档的生成

接下来,我们需要借助Apache POI-OOXML库来生成Word文档。该库提供了API来创建和操作Word文档。

以下是一个简单的示例代码,演示如何生成Word文档并向其中添加表格:

import org.apache.poi.xwpf.usermodel.*;

public class WordGenerator {
    public static void main(String[] args) {
        try {
            XWPFDocument document = new XWPFDocument();
            XWPFTable table = document.createTable();

            // 添加表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("姓名");
            headerRow.addNewTableCell().setText("年龄");
            headerRow.addNewTableCell().setText("性别");

            // 添加数据行
            XWPFTableRow dataRow = table.createRow();
            dataRow.getCell(0).setText("张三");
            dataRow.getCell(1).setText("25");
            dataRow.getCell(2).setText("男");

            FileOutputStream fos = new FileOutputStream("data.docx");
            document.write(fos);
            fos.close();

            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码首先创建一个空的Word文档,然后创建一个表格。接着,我们可以通过操作表格的行和单元格来添加表头和数据行。

5. 将Excel转成Word

现在,我们将前面的两个步骤结合起来,实现将Excel文件转换成Word文档的功能。

以下是一个示例代码,演示如何将Excel文件中的数据转换成Word文档:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xwpf.usermodel.*;

public class ExcelToWordConverter {
    public static void main(String[] args) {
        try {
            Workbook workbook = WorkbookFactory.create(new File("data.xlsx"));
            Sheet sheet = workbook.getSheetAt(0);

            XWPFDocument document = new XWPFDocument();
            XWPFTable table = document.createTable();

            // 添加表头
            XSSFRow headerRow = sheet.getRow(0);
            XWPFTableRow tableHeaderRow = table.getRow(0);
            for (int i = 0; i < headerRow.getLastCellNum(); i++) {
                tableHeaderRow.getCell(i).setText(headerRow.getCell(i).getStringCellValue());
            }

            // 添加数据行
            for (int i = 1; i <= sheet.getLastRowNum(); i++) {
                XSSFRow dataRow = sheet.getRow(i);