2016-09-19 68 views
0

我的要求是在Excel中搜索一個值(消息ID)並獲取該行的其他列值(源和目標)並形成一個XML。通過從Java中提取Excel中的值來形成XML

說我的Excel看起來象下面這樣:

Message ID Output Source Target 
@A74104I @A74104O IPT  CRD 
@A74101 @A74101 IAP  CRD 
@A74101 @A74101 IAP  CRD 
@A74104I @A74104O IAP  CRD 

對於例如對於消息ID A74104I,提取源和目標並如下所示形成一個XML。該messageID重複,並且有2個源和目標被附加在相同的XML中。

<ApplicationParameters> 
<Parms name="default" type="default"> 
    <SGHeader> 
     <ServiceName> 
      <TargetApplication> 
       <IAP>CRD</IAP> 
       <IPT>CRD</IPT> 
      </TargetApplication> 
     </ServiceName> 
    </SGHeader> 
</Parms> 

對於每個MESSAGEID創建不同的XML。 如果特定MESSAGEID源重複(例如,在上述Excel進行A74101來源IAP是一樣的),然後把這個MESSAGEID一個異常文件,如果你想這樣做在Java中,它看起來像<MessageID> <A74101/> </MessageID>

+0

可能還有其他方法可以做到這一點(例如使用Visual BASIC),但這是一項極好的任務,可以使用bash,perl,python或powershell自動完成(如果您需要它!)如果您以csv格式存儲excel,則更容易)。你想自動化它還是隻需要它像excel中的按鈕,用戶以交互方式運行? – blackpen

+0

@blackpen在上面的場景中MessageId從一個文件作爲輸入傳遞,我不熟悉其他腳本。 –

+0

那麼,這是否意味着你想自動化它?當你說你想從第一個文件中提取一個MessageId,然後你想在excel中搜索那個特定的MessageId並且創建一個XML消息(可能把生成的xml消息寫入第三個文件)時,這聽起來像是自動化。你有把excel作爲csv文件存儲的好處嗎?如果可以的話,你可以使用VBScript或PowerShell腳本自動化整個事情。如果您使用的是非Unix(非Linux)平臺(Windows?),那麼這將是一條很好的路線。 – blackpen

回答

0

,看here代碼關於如何解析Excel工作表。

一旦完成,您將繼續從輸入文件中提取MessageId。您可以使用正則表達式在Java中執行此操作。查看herehere瞭解如何執行此操作的代碼。


如果你想使用powershell來做,請看這個post。他的要求與您的要求幾乎相同(只是他從控制檯讀取輸入內容)。

您可以按照該帖子中所示的行/列進行搜索。找到匹配項後,您將提取相關信息並將XML消息寫出到外部文件中。

一旦你能夠做到這一點,那麼你可以不用擔心被如圖this編碼後從第一個輸入文件提取的MessageId。

該程序是否適合您的需求?

+0

不,這沒有幫助,我需要用Java創建。 –