2013-02-06 29 views
0

我正在嘗試從Microsoft Word中提取數據並將其轉換爲sql語句並將其插入到Oracle數據庫中。HWPFDocument/XWPFDocument新行

當MS-字中的數據包含通過創建新線[Shift鍵回車,而不僅僅是進入,

文本包含有看起來像一個問號的方塊圖標。

enter image description here

凡ET是使用回車鍵只是標準的新線和ST是使用

按住Shift鍵並輸入組合新的生產線。因此,當生成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的bug。在poi-3.8中顯示爲\ r。

+0

某些Microsoft Office格式使用\ r而不是\ n作爲其新行,這可能是您的文件的情況嗎? – Gagravarr

+0

@Gagravarr我試過替換\ r,但它所做的只是替換新行。 – Kevin

+0

首先,你如何從文件中獲取文本?你可以通過hexdumper發送文本來找出那些神祕人物是什麼? – Gagravarr

回答

1

什麼你幾乎可以肯定看到的是「田」在Word文檔中,這是如鏈接文本的特殊功能塊,宏等

選項排名第一的是繼續使用WordExtractor,但在電話會議上stripFields(String)使用它之前生成的文本。這會從你的文本中刪除這些字段中的任何一個。

另一種選擇是使用不同的方式獲取文本。 WordToTextConverter是Apache POI的一部分,是處理更多格式的更復雜的代碼,應該跳過這些(WordExtractor非常簡單和低級別)。另一種是使用Apache Tika,它提供了從多種文件格式中提取文本的常用方法。這確實有正確的代碼來處理字段,作爲一個額外的獎勵,當您的需求發生變化時,您將無法支持.docx或.pdf。

+0

因此,就StripFields(String)而言,這並不適用於段落結尾行,但我會嘗試字文本轉換器 – Kevin

+0

廢話,對不起,我真的不是故意要投下來。我只注意到我做了... – Kevin

+0

我想投票並鎖定。你可以在答案上編輯簡單的東西嗎? – Kevin