HWPFDocument / XWPFDocument新行

时间:2013-02-06 15:35:17

标签: java apache-poi

我正在尝试从microsoft-word中提取数据并将其转换为sql语句并将其插入Oracle数据库。

当ms-word中的数据包含由[Shift-Enter]创建的新行而不只是输入时,

该文字包含一个看起来像带有问号的框的图标。

enter image description here

如果ET只是使用回车键的标准新行,而ST是使用

的新行

Shift-Enter组合。因此,当生成SQL并将其插入oracle时,oracle不会将其视为文本,而是将其视为十六进制。

我的问题是,如何将[shift-enter]创建的行删除为标准'\ n'?

由于

更新 这就是我获取文本信息的方式

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
HWPFDocument doc = new HWPFDocument(fs);
WordExtractor we = new WordExtractor(doc);
text = we.getText();

更新答案: 这是poi-3.6中的一个错误。在poi-3.8中它显示为\ r。

1 个答案:

答案 0 :(得分:1)

你几乎肯定会看到word文档中的“字段”,它们是特殊的文本块,例如链接,宏等等。

第一个选项是继续使用WordExtractor,但在使用之前在生成的文本上调用stripFields(String)。这将从文本中删除任何这些字段。

另一种选择是使用不同的方式来获取文本。 WordToTextConverter是Apache POI的一部分,是处理更多格式的更复杂的代码,应该为您跳过这些(WordExtractor非常简单和低级别)。另一种是使用Apache Tika,它提供了从多种文件格式中提取文本的常用方法。这确实有适当的代码来处理字段,作为额外的奖励,当你的需求发生变化时,你支持.docx或.pdf是微不足道的!