我正在尝试从 microsoft-word 中提取数据并将其转换为 sql 语句并将其插入 Oracle 数据库。
当 ms-word 中的数据包含通过 [Shift-Enter] 创建的新行而不只是 Enter 时,
文本包含一个看起来像带有问号的框的图标。
其中 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/