Читайте данные из документа Word в формате .docx как каждое поле и сохраняйте их в базе данных на Java - PullRequest
0 голосов
/ 26 июня 2018

Может ли он считывать данные из файла .docx в виде поля, чтобы его можно было сохранить в базе данных? Требуется использовать Java. Например, у нас есть документ в форме Word, такой как CV, и мы должны прочитать каждое поле, например (Имя, Фамилия, Возраст, Позиция, Дата), чтобы можно было сохранить его в базе данных не в одном большом текстовом столбце, а как отдельное поле. , enter image description here В Java существует 2 библиотеки, одна из которых - Apache POI, другая - docx4j, но она позволяет сохранять данные в виде одного большого фрагмента в одном текстовом поле в базе данных. Но оно должно отделять каждое поле как элемент.

Я сделал так, чтобы данные сохранялись в один большой кусок. В результате данные сохраняются только таким образом enter image description here

Я не нашел подходов к этому. Не могли бы вы предложить что-нибудь, пожалуйста.

1 Ответ

0 голосов
/ 26 июня 2018

Вам необходимо проанализировать документ Microsoft Word с предоставленным вами примером ввода и получить конкретные значения для каждой строки.

Во-первых, вот формат тестового файла, который я использовал, я поместил его в локальный каталог, и он соответствует формату вашего примера изображения:

Employee

Имя: Боб

Фамилия: Смит

Возраст: 28

Позиция: Разработчик

Дата: 6/26/18

import java.io.File;
import java.io.FileInputStream;
import java.util.LinkedList;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

    public class Test {

    public static void main(String[] args) {
        //exampleFile is the layout file you provided with data added for testing
        List<String> values = parseWordDocument("exampleFile.docx");

        for(String s: values)
            System.out.println(s);
    }

    public static List<String> parseWordDocument(String documentPath) {
        FileInputStream fInput = null;
        XWPFDocument document = null;
        List<String> parsedValues = null;

        try {
            File file = new File(documentPath);

            fInput = new FileInputStream(file.getAbsolutePath());
            document = new XWPFDocument(fInput);

            //getParagraphs() will grab each paragraph for you
            List<XWPFParagraph> paragraphs = document.getParagraphs();

            parsedValues = new LinkedList<>();

            for (XWPFParagraph para : paragraphs) {
                //remove the title
                if(!para.getText().equals("Employee")) {
                    //here is where you want to parse your line to get needed values
                    String[] splitLine = para.getText().split(":");
                    //based on example input file [1] is the value you need
                    parsedValues.add(splitLine[1]);
                }
            }

            fInput.close();
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return parsedValues;
    }

}

При этом вывод, который я получаю из списка, созданного parseWordDocument () , будет:

Bob

Smith

28

Разработчик

* * 6 тысяча сорок четыре / 26/18 * * тысячи сорок-пять

Так что теперь вы можете просто взять возвращенный список и зациклить его (вместо вывода значений) и создать соответствующий запрос SQLite.

...