0

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

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

文本包含一个图标,看起来像一个带问号的框。

在此处输入图像描述

其中 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。

4

1 回答 1

1

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

选项一是继续使用 WordExtractor,但在使用前对结果文本调用stripFields(String) 。这将为您从文本中删除任何这些字段。

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

于 2013-02-06T17:58:33.393 回答