java - HWPFDocument/XWPFDocument 新行

标签 java apache-poi

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

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

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

enter image description here

其中 ET 只是使用 Enter 键的标准新行,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。

最佳答案

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

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

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

关于java - HWPFDocument/XWPFDocument 新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732791/

相关文章:

java - 当当前线程已经运行时,为什么要中断它呢?

java - Apache Poi 如何在每个打印页面的开头添加页眉?

java - 有没有办法显示换行符,使用 HWPFDocument 的订单列表

java - 如何通过poi为word中的不同部分设置页码

java - 如何将excel中的数据存储到ArrayList<ArrayList<String>>

java - 学习 Apache Ofbiz?

java - Spring:基于注释的配置期间@import文件中的引用bean

java - WorkManager 约束(setRequiresCharging)在模拟器上不起作用

java - 自定义按钮 : properties change, 按钮应重新绘制

java - Apache POI 超出了 GC 开销限制