【发布时间】:2015-02-24 10:14:36
【问题描述】:
我想将各种类型的 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 可能有不同的格式,但包含多个节点,后跟一系列员工节点。
-
我的(截断的)示例如下所示
MY TEST LTDMY TEST LIITE 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>
我真的只需要提取员工数据,所以也许有更简单的方法来做到这一点?
[编辑说:我无法正确格式化第一个示例,但我相信你会明白的。]
【问题讨论】:
-
Excel.Workbooks.OpenXML 返回工作簿而不是工作表