У меня есть несколько html-файлов, и мне нужно импортировать данные в Excel. Я использую VSTO (VB.NET) для достижения того же. К сожалению, я получаю некоторые ошибки. Я новичок в разборе HTML. Может кто-нибудь сказать мне, где я иду не так в коде ниже.
Я попытался прочитать текст заголовка 2 из коллекции HTML, но он не работает. Может кто-нибудь сообщить мне, где я иду не так?
Dim doc As HtmlDocument, htmlTable As Object, htmlBody As
HtmlElementCollection
Dim wbrowser As New WebBrowser
Dim header2 as String
wbrowser.Visible = False
wbrowser.Navigate(InputHtmlFile)
'Do
'
'Loop Until Not wbrowser.IsBusy
doc = wbrowser.Document
htmlBody = doc.GetElementsByTagName("BODY")
htmlheadings = doc.GetElementsByTagName("H2")
header2 = htmlheadings(0).Innertext
Ниже приведен HTML-код
<HEAD>
<TITLE> SOME TITLE </TITLE>
</HEAD>
<BODY>
<H2> HEADER 2 TEXT </H2>
<HR NOSHADE>
<H3> <U>DATA</U> </H3>
<BLOCKQUOTE>
VERSION NUMBER X.X.XXX
</BLOCKQUOTE>
<HR SIZE = 5>
<H3> <U>DATA SET 2</U></H3>
<BLOCKQUOTE>
<H4>DATA SET 3 </H4>
<BLOCKQUOTE>
<TABLE border=1>
<TR> <TH> TableHeader1 </TH> <TH>TTableHeader2</TH>
<TH>TableHeader3</TH><TH>TableHeader4</TH><TH>TableHeader5</TH>
<TH>TableHeader6</TH></TR><TR ALIGN=CENTER><TD>1</TD><TD> 6.4</TD><TD>
StringData</TD><TD> No</TD><TD> </TD><TD> </TD> </TR></TABLE><BR>
</BLOCKQUOTE>
Я ожидаю, что "HEADER 2 TEXT" назначен переменной header2, но я получаю следующую ошибку в строке
header2 = htmlheadings(0).Innertext
System.ArgumentOutOfRangeException: значение «0» недопустимо для «индекса». 'index' должен быть между 0 и -1.
Имя параметра: индекс '
htmlheadings (0) .InnerHtml = 'htmlheadings (0) .InnerHtml' вызвала исключение типа 'System.ArgumentOutOfRangeException'
Также коллекции htmlBody и htmlheadings пусты.