以编程方式将XML文件读入工作簿

我想读取各种types的XML文件到Excel中,以便用户可以进行分析和报告。 我可以手动执行此操作(文件|打开,select文件,select作为只读工作簿),但此代码给我一个错误:

Dim oExcel As New Excel.Application Dim oBook As New Excel.Worksheet oExcel = CreateObject("Excel.Application") oBook = oExcel.Workbooks.OpenXML(readFiles.Item(thisFile), , LoadOption:=1) 

错误是

GFF Translator.exe中出现未处理的types为“System.InvalidCastException”的exception

其他信息:无法将“System .__ ComObject”types的COM对象转换为“Microsoft.Office.Interop.Excel.Worksheet”types的接口。 此操作失败,因为具有IID“{000208D8-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:没有此类接口支持(exception来自HRESULT:0x80004002(E_NOINTERFACE)) 。

XML可以采用不同的格式,但包含许多节点,然后是一系列员工节点。

  • 我的(截断)例子看起来像这样

    我的testing有限公司testing我的testing有限公司(无)17 MR .. MR .. MR ..

或这个:

 <?xml version="1.0" encoding="UTF-8"?> <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope"> <EnvelopeVersion>2.0</EnvelopeVersion> <Header><MessageDetails><Class>HMRC-PAYE-RTI-FPS</Class><CorrelationI <SenderDetails><IDAuthentication><SenderID>PRODUCT</SenderID></IDAuth </Header> <Body><IRenvelope xmlns="http://www.govtalk.gov.uk/taxation/PAYE/RTI/ <FullPaymentSubmission><EmpRefs><OfficeNo>123</OfficeNo><PayeRef>ABC1 <Employee><EmployeeDetails><NINO>AA112233D</NINO><Name><Fore>AILEEN.. <Employee><EmployeeDetails><NINO>BB112233D</NINO><Name><Fore>BEATA... <Employee><EmployeeDetails><NINO>CC112233D</NINO><Name><Fore>CERYS... </FullPaymentSubmission></IRenvelope></Body></GovTalkMessage> 

我真的只需要提取员工数据,所以也许有一个更简单的方法来做到这一点?

[编辑说:我不能得到第一个例子格式正确,但我相信你会明白的。]

您已将结果分配给错误的对象。 Excel.Workbooks.OpenXML方法返回一个Excel工作簿,而不是一个Excel工作表

Dim oBook更改为新的Excel.Worksheet,Dim oBook更改为新的Excel.Workbook并尝试