_ListView2HTMLTable

    • Offizieller Beitrag

    Ich brauchte gerade eine Funktion, die aus einem ListView eine HTML-Tabelle erstellt, also habe ich mir eine Funktion geschrieben.
    Vielleicht kann ja noch jemand sowas gebrauchen (Beispiel ist dabei):

    Spoiler anzeigen
    [autoit]


    ; Beispiel für die Funktion "_ListView2HTMLTable"

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sTestFilename = @TempDir & '\ListView2HTML.html', $sHTML, $hFile
    $hGui = GUICreate('ListView2HTML', 600, 300)
    $idListView2HTML = GUICtrlCreateButton('ListView2HTML', 10, 10, 140, 25)
    $idListView = GUICtrlCreateListView('Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag', 10, 50, 580, 240)
    $hListView = GUICtrlGetHandle($idListView)
    For $i = 0 To 9
    $sItem = ''
    For $j = 0 To 6
    $sItem &= Random(10, 99, 1) & '|'
    Next
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $idListView)
    Next
    _GUICtrlListView_JustifyColumn($hListView, 3, 2) ; Spalten 3 und 4 zentriert
    _GUICtrlListView_JustifyColumn($hListView, 4, 2)
    _GUICtrlListView_JustifyColumn($hListView, 5, 1) ; Spalten 5 und 6 rechtsbündig
    _GUICtrlListView_JustifyColumn($hListView, 6, 1)
    GUISetState()
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idListView2HTML
    GUICtrlSetState($idListView2HTML, $GUI_DISABLE)
    $sHTML = _ListView2HTMLTable($hListView, 'Test')
    If Not @error Then
    $hFile = FileOpen($sTestFilename, 2)
    If $hFile <> -1 Then
    FileWrite($hFile, $sHTML)
    FileClose($hFile)
    ShellExecute($sTestFilename)
    Sleep(5000)
    FileDelete($sTestFilename)
    EndIf
    EndIf
    GUICtrlSetState($idListView2HTML, $GUI_ENABLE)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ListView2HTMLTable
    ; Description ...: Gibt ein ListView als HTML-Tabelle zurück.
    ; Syntax.........: _ListView2HTMLTable($hListView, $sTitle = 'ListView2HTMLTable')
    ; Parameters ....: $hListView - das Handle des ListViews
    ; $sTitle - Title für die HTML-Seite
    ; Return values .: Success = die HTML-Seite als String
    ; Failure
    ; 1 = Handle für das ListView ist fehlerhaft
    ; 2 = das ListView besitzt keine Einträge
    ; Author ........: Oscar (http://www.autoit.de)
    ; ===============================================================================================================================
    Func _ListView2HTMLTable($hListView, $sTitle = 'ListView2HTMLTable')
    Local $sFontFamily = 'Verdana', $sFontSize = '10pt' ; Schriftart und -größe für die Tabelle
    Local $sBorder = '4' ; Randstärke
    Local $sCellspacing = '2' ; Zellenabstand
    Local $sCellpadding = '8' ; Zelleninnenabstand
    Local $sHeaderBGColor = '#1750A7', $sHeaderColor = '#FFFFFF' ; Hintergrund- und Textfarbe für die Kopfzeile der Tabelle
    Local $sBGColor1 = '#FFFFE0', $sBGColor2 = '#E8FFE8' ; Hintergrundfarben für gerade/ungerade Zeilen der Tabelle
    If Not IsHWnd($hListView) Then Return SetError(1, 0, 0)
    Local $iItemCount = _GUICtrlListView_GetItemCount($hListView)
    If $iItemCount < 1 Then Return SetError(2, 0, 0)
    Local $iColumnCount = _GUICtrlListView_GetColumnCount($hListView)
    Local $aColumns, $aItem, $aAlign[3] = ['left', 'right', 'center']
    Local $sHTML = StringFormat('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n<html>\n\t<head>\n\t\t<title>%s</title>\n\t</head>\n\t<body>\n', $sTitle)
    $sHTML &= StringFormat('\t\t<table style="font-family:%s; font-size:%s; border-color:#1750A7; border-style:ridge" border="%s" cellspacing="%s" cellpadding="%s">\n', $sFontFamily, $sFontSize, $sBorder, $sCellspacing, $sCellpadding)
    $sHTML &= StringFormat('\t\t\t<tr style="background-color: %s; color: %s">\n', $sHeaderBGColor, $sHeaderColor)
    For $i = 0 To $iColumnCount - 1
    $aColumns = _GUICtrlListView_GetColumn($hListView, $i)
    $sHTML &= StringFormat('\t\t\t\t<th width="%s" align="center">%s</th>\n', $aColumns[4], $aColumns[5])
    Next
    $sHTML &= StringFormat('\t\t\t</tr>\n')
    For $i = 0 To $iItemCount - 1
    If Mod($i, 2) Then
    $sHTML &= StringFormat('\t\t\t<tr style="background-color: %s">\n', $sBGColor1)
    Else
    $sHTML &= StringFormat('\t\t\t<tr style="background-color: %s">\n', $sBGColor2)
    EndIf
    $aItem = _GUICtrlListView_GetItemTextArray($hListView, $i)
    For $j = 0 To $iColumnCount - 1
    $aColumns = _GUICtrlListView_GetColumn($hListView, $j)
    $sHTML &= StringFormat('\t\t\t\t<td align="%s">%s</td>\n', $aAlign[$aColumns[0]], $aItem[$j + 1])
    Next
    $sHTML &= StringFormat('\t\t\t</tr>\n')
    Next
    $sHTML &= StringFormat('\t\t</table>\n\t</body>\n</html>\n')
    Return SetError(0, 0, $sHTML)
    EndFunc

    [/autoit]