首页 > 解决方案 > 使用 VB.Net 将 Excel 转换为 HTML

问题描述

在 Windows 窗体中,我需要将数据(A 列到 C 列)从 Excel 导出到 HTML。

我正在尝试如下,但在 namedRanges 中获取“未找到类型‘工作表’的公共成员‘NamedaRanges’”。之后无法验证它是否会成功保存 HTML。请帮助解决这个问题。

Private Sub Button_click() 
    xlSheet=xlWB.Worksheets("Sheet3")  
    xlSheet.NamedRanges.SetPrintArea
          (xlSheet.Cells.GetSubrange
                          ("A1",C1")) 
   xlSheet.SaveAs(FileName:="C:\Users\
      Sample.html",FileFormat:=xlHtml)
End Sub

标签: htmlexcelvb.net

解决方案


对于非连续范围,您可能必须将其作为连续范围复制到临时工作表并导出

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        Const folder = "C:\tmp\"
        Const xlFile = "test1.xlsx"
        Const htmlfile = "export.html"

        Dim xls As New Excel.Application
        Dim wb As Workbook
        Dim ws As Worksheet, wsHtml As Worksheet

        wb = xls.Workbooks.Open(folder & xlFile, False, True) ' no link update , radonly
        ws = wb.Worksheets("Sheet3")

        ' create temp sheet, copy range to it, export and then delete it
        wsHtml = wb.Sheets.Add()
        ws.Range("A:A,C:C").Copy(wsHtml.Range("A1"))
        wsHtml.PageSetup.PrintArea = wsHtml.Columns("A:B").Address
        wsHtml.SaveAs(Filename:=folder & htmlfile, FileFormat:=44) ' html

        xls.DisplayAlerts = False
        wsHtml.Delete()
        xls.DisplayAlerts = True

        wb.Close(False)
        xls.Quit()
        MsgBox("Exported to " & folder & htmlfile)

    End Sub

推荐阅读