Ankündigung

Einklappen
Keine Ankündigung bisher.

Exceldatei (xls, xlsx) über PML einlesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Problem] Exceldatei (xls, xlsx) über PML einlesen

    Morgen zusammen,

    weiss jemand ob es geht über PML einer Excel Datei einzulesen, damit ich automatisch Wert setzen kann auf den Pipes / Branches?


    Code:
    !File     = object FILE('[COLOR=#0000FF]A:\irgendwas.xlsx[/COLOR]')
    !FileCont = !File.readfile()
    do !KKSlist VALUES !FileCont
        !KKS       = PART('$!KKSlist',1)
        $P $!KKS
    enddo
    Leider war die Idee wohl zu einfach und ich bekomme immer folgende Fehlermeldung:

    (41,384) Error - Record read is too large for buffer, record truncated


    Hat jemand eine Idee?
    Euer
    Totie

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Wo ist diese blöde "Any-Key"-Taste?

  • #2
    Servus!
    Ich bin zwar kein PML-Spezi, aber im EQUI-Modul existiert die Möglichkeit über: {Utility / Import-Equipment}
    alles Mögliche an Daten (auch für Pipes etc.) via *.xls zu importieren.
    Evtl. kannst du das in deinem PML-Macro nutzen.

    Kommentar


    • #3
      Hallo,

      Wir haben das schon mal beschrieben
      schau mal


      grüßen
      mitn "M" geht's manchmal leichter, aber Winkelbemaßung geht a net

      Kommentar


      • #4
        Hi Totie.

        Ich mache sowas sehr gerne über eine CSV-Datei, die ich mir als Report ausgeben kann (als erstes immer das Attribut "Name" in der ersten Spalte (in Excel), dann alles mögliche an Attribute, die ich auch so als Spaltenüberschrift übernehme). Nach dem Editieren in Excel diese wieder als CSV speichern und dann hab ich mir folgenden Code geschrieben:
        (Hierbei ist 'Load PipeAttributeFile' nur ein Synonym für alles mögliche )

        Code:
        call !!FileBrowser('%PDMSUSER%',|*.csv|,'Load PipeAttributeFile ...',true,'')
        !filename = !!Filebrowser.file
        if unset(!filename) then
           return
        endif
        !VYSTUP = OBJECT FILE ('$!filename')
        !strarray = !VYSTUP.ReadFile()
        
        !header = split(!strarray[1],';')
        markdb
        do !q from 2 to !strarray.size()
           !rowspl = split(!strarray[!q],';')
           do !i from 1 to !header.size()
              if matchw(upcase(!header[!i]),'*NAME*') then
           !name = !rowspl[!i]
           $P $!name
           !dbname = !name.dbref()
              else
           !attribname = !header[!i]
           !attribval = !rowspl[!i]
           if !attribval neq '' then
            !dbname.attribute(!attribname) = !attribval
           else
            $P $!attribname -no values-
           endif
              endif
           enddo
        enddo
        $p Import Finish!!
        Vlt hilft es dir daraus zu lesen, wie man es mit einer Excel-Liste geht, wobei es ja keine echte Excel-Liste ist, sondern nur eine CSV-Datei, die in Excel besarbeitet wird.
        Aber wenn sowas direkt mit einer XLS oder XLSX/XLSM-Datei funktioniert wäre das natürlich viel besser.
        Gruß
        Tom
        ---------------------------------------------------------
        Man muß nichts wissen..... Man muß nur wissen, wo es steht...

        Kommentar

        Lädt...
        X