Daten (TXT File) in einem Excel Sheet speichern

  • Hi @ all,

    Ich hab da ein Problem: Wie kann ich täglich wiederkehrende Daten (Überwachung des Freien Speichers der HDD vom Server) (.TXT File) in einenem Exel file speichern (anhängen)

    ich habe 4 Server die so überwacht werden und die dann alle in einem Excel File gespeichert werden sollen (zwecks der STATISTIK).

    Das Überwachungsscript schaut so aus:

    Spoiler anzeigen
    [autoit]


    #include <Date.au3>
    #include <_sendmail.au3>

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

    Global $root = IniRead(@ScriptDir & "\Export.ini", "PFADE", "root", "keine Pfad konfiguriert")
    Global $MAN = IniRead(@ScriptDir & "\Export.ini", "MANDANT", "MAN", "keine Pfad konfiguriert")
    Global $JACDAT = IniRead(@ScriptDir & "\Export.ini", "PFADE", "JACDAT", "keine Pfad konfiguriert")

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

    FileDelete(@ScriptDir & "\DirDaten.txt")
    $file = FileOpen(@ScriptDir & "\DirDaten.txt", 1)
    ; Check if file opened for writing OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf
    SplashTextOn("", "Verzeichnissgrößen werden ermittelt und per Mail an die Kst. 93130 versendet ", 400, 50)
    FileWrite($file, "Informationen vom " &@MDAY & "." & @MON & "." &@YEAR & @CRLF)
    FileWrite($file, "Der " & @YDAY & ". Tag anno " & @YEAR & @CRLF)
    FileWrite($file, ";------------------------------" & @CRLF)
    ;-----------------------------------------------------------------------------------------------------------------
    $timer = TimerInit()
    $size = DirGetSize($JACDAT, 1)
    $diff = Round(TimerDiff($timer) / 1000) ; time in seconds
    If IsArray($size) Then
    FileWrite($file, "JackDat Verzeichniss Größe" & @CRLF)
    FileWrite($file, "Größe: " & Round($size[0] / 1024 / 1024 / 1024, 2) & " GB" & @CRLF)
    FileWrite($file, "Größe: " & Round($size[0], 2) & " byte" & @CRLF)
    FileWrite($file, "Files: " & $size[1] & @CRLF)
    EndIf
    ;-----------------------------------------------------------------------------------------------------------------
    $varD = DriveSpaceFree($root)
    FileWrite($file, ";------------------------------" & @CRLF)
    FileWrite($file, "Größe (" & $root & ") :" & Round($varD / 1024, 2) & " GB noch frei" & @CRLF)
    ;-----------------------------------------------------------------------------------------------------------------
    $timer = TimerInit()
    $sizeD = DirGetSize($JACDAT & "\Belegarchiv\" & StringTrimLeft(@YEAR, 2) & @MON, 1)
    $diff = Round(TimerDiff($timer) / 1000) ; time in seconds
    If IsArray($sizeD) Then
    FileWrite($file, ";------------------------------" & @CRLF)
    FileWrite($file, "BelegArchiv " & @MON & " / " & StringTrimLeft(@YEAR, 2) & @CRLF)
    FileWrite($file, "Verzeichniss Größe : " & Round($sizeD[0] / 1024 / 1024, 2) & " MB" & @CRLF)
    FileWrite($file, "Files: " & $sizeD[1] & @CRLF)
    FileWrite($file, "Dirs: " & $sizeD[2] & @CRLF)
    EndIf
    ;-----------------------------------------------------------------------------------------------------------------
    $timer = TimerInit()
    $sizeD = DirGetSize($JACDAT & "\Belegarchiv\" & StringTrimLeft(@YEAR, 2) & "0"& (@MON - 1), 1)
    $diff = Round(TimerDiff($timer) / 1000) ; time in seconds
    If IsArray($sizeD) Then
    FileWrite($file, ";------------------------------" & @CRLF)
    FileWrite($file, "BelegArchiv Vormonat " & "0"& (@MON - 1) & " / " & StringTrimLeft(@YEAR, 2) & @CRLF)
    FileWrite($file, "Verzeichniss Größe Vormonat: " & Round($sizeD[0] / 1024 / 1024, 2) & " MB" & @CRLF)
    FileWrite($file, "Files: " & $sizeD[1] & @CRLF)
    FileWrite($file, "Dirs: " & $sizeD[2] & @CRLF)
    EndIf
    FileClose($file)
    $file = FileOpen(@ScriptDir & "\DirDaten.txt", 0)
    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf
    $dat = FileRead($file)
    _sendmail ("Verzeichnisgrößen Jack (Mandant: " & $MAN & ") vom " & _Now(), $dat)
    FileClose($file)
    SplashOff()

    [/autoit]

    In dem TXT File steht folgendes drinnen

    Spoiler anzeigen

    Informationen vom 10.04.2007
    Der 100. Tag anno 2007
    ;------------------------------
    JackDat Verzeichniss Größe
    Größe: 26.48 GB
    Größe: 28434360752 byte
    Files: 1984094
    ;------------------------------
    Größe (D: ) :14.57 GB noch frei
    ;------------------------------
    BelegArchiv 04 / 07
    Verzeichniss Größe : 77.75 MB
    Files: 16309
    Dirs: 0
    ;------------------------------
    BelegArchiv Vormonat 03 / 07
    Verzeichniss Größe Vormonat: 396.56 MB
    Files: 82375
    Dirs: 0


    Diese Daten sollen dann in einem Excel Sheet nach Datum sortiert und untereinander drinnen stehen.

    [/EDIT]: Pro Server ein Register !!


    danke für eure Hilfe
    lg
    TOM aus Wien

  • Include, FileInstall


    Musst halt immer neu kompilieren lassen - aber da gibts ja auch befehle ;)

    • Offizieller Beitrag

    Als erstes empfehle ich dir, nicht den Umweg über die TXT-Datei zu gehen, sondern beim Zusammenstellen der Daten im Überwachungsscript die Daten gleich in ein Array zu speichern um sie dann von dort in Excel zu übertragen.

    Erstelle zuerst (kannst du per Hand machen) ein Exceldokument mit einem Sheet für jeden Server. Falls die Servernamen wechseln, solltest du das automatisieren.

    Wenn deine Daten zusammengestellt sind:
    - Exceldokument öffnen ( _ExcelBookOpen($sFilePath, $fVisible = 1, $fReadOnly = False) )
    - benötigten Sheet aktivieren ( _ExcelSheetActivate($oExcel, $vSheet) )
    - Daten eintragen ( _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow, $iColumn = 1) )
    du kannst ja, z.B. in A1 hinterlegen, welche Zelle zuletzt beschrieben wurde und dies vor dem neuen Schreibvorgang auslesen ( _ExcelReadCell($oExcel, $sRangeOrRow, $iColumn = 1) ) um die Addressierung vorzunehmen
    - Exceldokument speichern ( _ExcelBookSave($oExcel, $fAlerts = 0) )
    - Exceldokument schließen ( _ExcelBookClose($oExcel, $fSave = 1, $fAlerts = 0) )

  • da bekanntlich viele wege nach rom führen:
    ich bevorzuge schon txt-dateien.
    ich sehe hier für mich folgende lösung:

    1. txt-datei oki, aber als extension .csv
    2. datenaufbereitung zu (1) zeilenweise mit ; als separator
    3. import der fertigen csv-datei in excel. (datei/öffnen/dateityp: *.prn;*.txt;*.csv .. oder eben gleich doppelklick auf .csv datei)

    excel schmeisst dann die daten in je eine zelle, wobei das ; als trennung benutzt wird.

    wird von mir in ähnlicher weise bereits erfolgreich praktiziert.

    gruss exberliner