是否可以从.docx文件中读取数据作为字段,以便将其保存在数据库中?必须使用Java。 例如,我们有像CV这样的Word表单文档,我们应该阅读每个字段,例如(姓名,姓氏,年龄,位置,日期),以便它能够将其保存在数据库中而不是一个大文本列中,而是一个单独的字段中。 Java中有2个库,其中一个是Apache POI,另一个是docx4j,但是它提供了一种将数据大块保存在数据库的一个文本字段中的方法。 但是它应该将每个字段都分隔为一个元素。
我这样做是为了将数据保存为一大块。 结果仅以这种方式保存数据
我还没有找到任何办法。 请给我一些建议。
答案 0 :(得分:2)
您需要使用您提供的输入示例来解析Microsoft Word文档,并获取每一行的特定值。
首先,这是我使用的测试文件的格式,我将其放置在本地目录中,并且遵循与示例图像相同的格式:
员工
名称: Bob
姓氏: Smith
年龄: 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()创建的列表中得到的输出是:
鲍勃
史密斯
28
开发人员
6/26/18
因此,您现在可以简单地获取返回的列表并将其循环(而不是打印出值)并创建适当的SQLite查询。