2013-03-15 249 views
1

我想读取html并将其写入Excel表格中的几列。目前我正在使用一个宏来完成它,但在VBScript中需要它。从html读取并写入Excel

我想统计合规性检查和oracle表的失败次数,并将其写入Excel文档。

Full size image示例html和所需的Excel文件结果。

Sample html and desired excel output

回答

0

你可以使用任何dom库在HTML和OpenXML sdk读写出来到Excel(2007格式 - XLSX)。这是否回答你的问题,还是你有什么具体的事情你正在努力?


编辑

对不起,我以为你在谈论在VB.Net做一些原因,现在我知道你已经在Excel中。所以我不清楚你在问什么 - 如何打开html文件?如何计算或存储值?

也许张贴你到目前为止的脚本,并具体说明什么是不工作。

3

Excel可以从VBScript来控制这样的:

Set xl = CreateObject("Excel.Application") 
xl.Visible = True 

Set wb = xl.Workbooks.Add 

HTML文件可以被解析成DOM文档:

Set doc = CreateObject("Msxml2.DOMDocument.6.0") 
doc.async = True 
doc.load "C:\path\to\your.html" 

使用一个XPath表达来选择人<td>元素:

Set td = doc.selectNodes("//tr/td") 

此时td包含文档中所有<td>元素的集合。你可以这样处理它们:

numrows = doc.selectNodes("//tr").Length 
numcols = td.Length/numrows 

row = 0 
For i = 0 To td.Length - 1 Step numcols 
    If td(i).Text = "Fail" Then 
    row = row + 1 
    wb.Sheets(1).Cells(row, 1).Value = CDate(Split(td(i+2).Text)(0)) 
    If InStr(td(i+1).Text, "compliance") > 0 Then 
     wb.Sheets(1).Cells(row, 2).Value = 1 
    ElseIf InStr(td(i+1).Text, "Oracletable") > 0 Then 
     wb.Sheets(1).Cells(row, 3).Value = 1 
    End If 
    End If 
Next 

以上会创建这样一个表:

2/9/2012 1  
2/9/2012   1 
2/9/2012   1 
. 
. 
. 

然后,您可以使用Excel的Consolidate方法来整合数据:

Const xlSum = -4157 

wb.Sheets(2).Range("A1").Consolidate _ 
    Array(wb.Sheets(1).Name & "!R1C1:R" & row & "C3"), xlSum 
+0

+1对于这个好的和明确的答案 – JMax 2013-03-16 09:49:17