【问题标题】:reading an XML file into a workbook programmatically以编程方式将 XML 文件读入工作簿
【发布时间】: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 返回工作簿而不是工作表

标签: xml vb.net excel


【解决方案1】:

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

改变 将 oBook 设置为新 Excel.Worksheet将 oBook 设置为新 Excel.Workbook 并尝试

【讨论】:

  • 呃!只见树木不见森林...我打算将其设置为工作簿,从变量中可以看出!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 2019-06-10
  • 2012-07-06
相关资源
最近更新 更多