【问题标题】:Read data from Excel and write to Docx file using java从 Excel 读取数据并使用 java 写入 Docx 文件
【发布时间】:2018-10-24 09:23:21
【问题描述】:

我的 Excel 表中有一些带有标题的记录。我想读取所有记录并使用 java 将标题连同标题一起写入 docx 文件。感谢您的帮助。 能够将一个excel写入另一个excel文件,但无法写入docx文件。 我已经尝试过这种方式,但是 word 文件生成为损坏。

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

public class ExcelReaderDemo {
public static final String SAMPLE_XLSX_FILE_PATH = 
   "C:/XLXSToDocx/Roaster.xlsm";
public static final String FILE_PATH ="C:/XLXSToDocx/writeExcel.docx";

public static void main(String[] args) throws IOException, 
InvalidFormatException {
    Workbook workbook = WorkbookFactory.create(new 
File(SAMPLE_XLSX_FILE_PATH));

    System.out.println("Workbook has " + workbook.getNumberOfSheets() + " 
Sheets : ");

    Sheet sheet = workbook.getSheetAt(0);
    DataFormatter dataFormatter = new DataFormatter();

    Iterator<Row> rowIterator = sheet.rowIterator();
    while (rowIterator.hasNext()) {
        Row row = rowIterator.next();
        Iterator<Cell> cellIterator = row.cellIterator();

        while (cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            String cellValue = dataFormatter.formatCellValue(cell);
            System.out.print(cellValue + "\t");
        }

        try {

            FileOutputStream fos = new FileOutputStream(FILE_PATH);

            workbook.write(fos);

            fos.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

        System.out.println();
    }
    workbook.close();
}

}

【问题讨论】:

  • 到目前为止你尝试了什么。
  • 更新了我的帖子..@Web

标签: java apache-poi docx4j


【解决方案1】:

我建议使用 Apache Poi lib (https://poi.apache.org/)

【讨论】:

  • 我尝试过使用 Apache Poi,您可以在上面看到我的示例代码。
  • 你可以试试XSSFWorkbook而不是Workbook吗?
【解决方案2】:

像这样重写你的代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ExcelReaderDemo {
    public static final String SAMPLE_XLSX_FILE_PATH = "C:/XLXSToDocx/Roaster.xlsm";
    public static final String FILE_PATH = "C:/XLXSToDocx/writeExcel.docx";

    public static void main(String[] args) throws IOException, InvalidFormatException {
        Workbook workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH));

        System.out.println("Workbook has " + workbook.getNumberOfSheets() + " Sheets : ");

        try {

            FileOutputStream fos = new FileOutputStream(FILE_PATH);

            workbook.write(fos);

            fos.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }
        System.out.println("DONE !!!");
    }
}

【讨论】:

  • 感谢回复。生成的docx文件已损坏。我无法打开docx文件。
猜你喜欢
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多