以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]狐表如何解决取文件中列名为空白的问题?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=51356)

--  作者:ak47job
--  发布时间:2014/5/25 15:05:00
--  [求助]狐表如何解决取文件中列名为空白的问题?

  此为原始htm文件图
  在新的代码下,如何解决下面运行错误的问题?

 

 



 

 

[此贴子已经被作者于2014-7-28 15:20:46编辑过]

--  作者:ak47job
--  发布时间:2014/5/25 15:07:00
--  

 

代码


 

[此贴子已经被作者于2014-7-28 15:21:25编辑过]

--  作者:ak47job
--  发布时间:2014/5/25 15:11:00
--  

原代码

[此贴子已经被作者于2014-7-28 15:22:26编辑过]

--  作者:有点甜
--  发布时间:2014/5/25 15:56:00
--  

如下,自己核对一下

 

Dim web As New System.Windows.Forms.WebBrowser()

web.Navigate(projectpath & "临床.htm")

Do Until web.ReadyState = 4
   
    Application.DoEvents
   
Loop

\'取数据

Dim Cols As new List(of String)

Dim elems As object = web.Document.GetElementsByTagName("Table")(0).GetElementsByTagName("tr")

Dim m As Integer = 0

For Each elem As object In elems
   
    Dim i As Integer = 0
    Dim tdelems As object =  elem.GetElementsByTagName("td")
    If m = 0 Then
       
        For Each tdelem As object In tdelems
            If tdelem.InnerText.trim > "" Then
                Cols.add(tdelem.Innertext)
            End If
        Next
       
    Else
        If m > 1 Then  \'因为网页的表格有标题,如果不判断,就会增加出一个空行
            Dim r As Row = Tables("临床").AddNew
            i = 0
            For Each tdelem As object In tdelems
                If Tables("临床").Cols.Contains(Cols(i))
                    r(Cols(i)) = tdelem.Innertext
                End If
                i = i + 1
            Next
        End If
    End If
    m = m + 1
Next

Tables("临床").save


--  作者:ak47job
--  发布时间:2014/5/25 16:45:00
--  

可以了!

 

[此贴子已经被作者于2014-7-28 15:23:19编辑过]

--  作者:有点甜
--  发布时间:2014/5/25 17:00:00
--  

如下

 

Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate(projectpath & "临床.htm")
Do Until web.ReadyState = 4
   
    Application.DoEvents
   
Loop
\'取数据
Dim Cols As new List(of String)
Dim elems As object = web.Document.GetElementsByTagName("Table")(1).GetElementsByTagName("tr")
Dim m As Integer = 0
For Each elem As object In elems
   
    Dim i As Integer = 0
    Dim tdelems As object =  elem.GetElementsByTagName("td")
    If m = 0 Then
       
        For Each tdelem As object In tdelems
            If tdelem.InnerText.trim > "" AndAlso tdelem.InnerText <> "项目" Then
                Cols.add(tdelem.Innertext)
            End If
        Next
       
    Else
        If m > 0 Then  \'因为网页的表格有标题,如果不判断,就会增加出一个空行
            Dim r As Row = Tables("临床").AddNew
            i = 0
            For Each tdelem As object In tdelems
                If Tables("临床").Cols.Contains(Cols(i))
                    r(Cols(i)) = tdelem.Innertext
                End If
                i = i + 1
            Next
        End If
    End If
    m = m + 1
Next
Tables("临床").save


--  作者:ak47job
--  发布时间:2014/5/25 17:31:00
--  
可以了!感激不尽!!