2016-09-19 24 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创建。 –