Text nach Excel exportieren

  • Hi,

    habe mir eine Funktion geschrieben, mit der man Text in Excel exportieren kann.

    Ja das gibts schon, aber ich habe nichts entdeckt, womit bei "Tab" in die nächste Zelle geschrieben wird, quasi ein Zellen-"Delimiter".

    Ist eigentlich selbsterklärend :D

    Spoiler anzeigen
    [autoit]

    func text_to_excel()
    ;Quelle
    local $var = FileRead("test.txt")
    local $ary

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

    ;Ziel
    $ofile = _ExcelBookOpen(@ScriptDir & "\testexcel.xls",0)

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

    $ary = StringSplit($var,@LF)

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

    for $i = 1 to $ary[0]
    if StringInStr($ary[$i],chr(9)) then
    $str = StringSplit($ary[$i],chr(9))

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

    for $z = 1 to $str[0]
    _ExcelWriteCell($ofile,$str[$z],$i,$z)
    Next

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

    Else
    _ExcelWriteCell($ofile,$ary[$i],$i)
    EndIf

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

    Next
    _ExcelBookSave($ofile)
    _ExcelBookClose($ofile)
    EndFunc

    [/autoit]

    Grüße
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Hi,

    hab zuerst nicht gecheckt, dass du mit Zelle Spalte meinst.. 8o.
    Aber ja, es gefällt - ich denke ich werde das in Zukunft öfter mal brauchen können.

    Vielen Dank dafür! :thumbup:

  • CSV ist auch sehr praktisch ;).

    Spoiler anzeigen
    [autoit]

    Func TextToCSV($sSourceFile, $sDestFile)
    Local $var, $aSS, $hFile

    ;Quelle
    $sSource = FileRead($sSourceFile)

    ;Ziel
    $hFile = FileOpen($sDestFile, 1)

    $aSS = StringSplit($sSource, @LF)

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

    For $i = 1 To $aSS[0]
    $aSS[$i] = StringReplace($aSS[$i], @TAB, ";")
    $aSS[$i] = StringReplace($aSS[$i], @CR, "")
    FileWriteLine($hFile, $aSS[$i])
    Next

    FileClose($hFile)
    EndFunc ;==>TextToCSV

    [/autoit]
  • genauso hatte ich mal 2 Funktionen gebaut, die eine wandelt angegebene Spalten-Buchstaben in die entsprechende Zahl um, um damit dann zu arbeiten:

    Spoiler anzeigen
    [autoit]

    Func _ExcelColNum($num)
    if isint($num) Then
    return $num
    Else
    $cnt = StringLen($num)
    $plus = 0
    $num = StringUpper($num)
    if $cnt = 2 Then $plus = (asc(stringleft($num,1))-64) * 26
    $str = asc(StringRight($num,1)) -64
    $num = $str + $plus
    EndIf
    return $num
    EndFunc

    [/autoit]

    und mit der anderen kann man Spalten verschieben, also ausschneiden und einfügen in einem Schritt, das hatte ich damals glaub ich auch nicht entdeckt:

    Spoiler anzeigen
    [autoit]

    Func _ExcelColMove($oExcel, $from, $to)
    $ary = _ExcelReadSheetToArray($ofile,1,$from,0,1)
    _ExcelColumnDelete($ofile,$from)
    _ExcelColumnInsert($ofile,$to)
    for $i = 1 to ubound($ary)-1
    _ExcelWriteCell($ofile,$ary[$i][1],$i,$to)
    Next
    $ary = ""
    EndFunc

    [/autoit]

    Lässt sich auch hervorragend kombinieren:

    Spoiler anzeigen
    [autoit]

    _ExcelColMove($oExcel,_ExcelColNum("B"),_ExcelColNum("AA"))

    [/autoit]

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.