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

时间:2015-02-24 10:14:36

标签: xml vb.net excel

我想将各种类型的XML文件读入Excel,以便用户可以进行分析和报告。我可以手动执行此操作(文件|打开,选择文件,选择作为只读工作簿),但此代码给出了一个错误:

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中出现未处理的“System.InvalidCastException”类型异常

     

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

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

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

    我的测试LTDMY TEST LIMITE MY TEST LTD(无) 17 先生.. 先生.. 先生..

或者这个:

<?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>

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

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

1 个答案:

答案 0 :(得分:0)

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

更改 Dim oBook As New Excel.Worksheet to Dim oBook As New Excel.Workbook 并尝试

相关问题