Чтение данных из Excel и запись в файл Docx с использованием Java - PullRequest
0 голосов
/ 24 октября 2018

У меня есть несколько записей с заголовком в моем листе Excel. Я хочу прочитать все записи и записать в файл docx вместе с заголовком, используя java. Спасибо за помощь.Возможность записи одного Excel в другой файл Excel, но не удалось записать в файл DOCX.Я пытался таким образом, но файл слова создается как поврежденный.

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();
}

}

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Перепишите свой код так:

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 !!!");
    }
}
0 голосов
/ 24 октября 2018

Я бы предложил использовать Apache Poi lib (https://poi.apache.org/)

...