- 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
; Beispiel für die Funktion "_ListView2HTMLTable"
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
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
; #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