Aus Excel importieren (DEV)

21. Juni 2016 08:44

Hallo!
Wir haben seit neustem NAV2016, davor Navision 4.x.
Im alten Navision hatten wir eine Codeunit für so etwas, glaube aber nicht, dass man diese im neuen noch verwenden kann...
Ich möchte eigentlich nur eine Excel Tabelle öffnen, sie durchlaufen, etwas eintragen und anschließend unter anderem Namen abspeichern.
Jemand eine Idee/Tipp für mich wie ich das realisieren kann?
Geht das nur über den XML-Port?

Re: Aus Excel importieren (DEV)

21. Juni 2016 09:59

Die Tabelle 370 Excel Buffer, die es schon in Version 4 gab, gibt es auch in NAV 2016. Damit kann man wie bislang Excel ansteuern, nur werden jetzt statt der Automations (COM-Schnittstelle ) .NET und Open XML genutzt.
https://blogs.msdn.microsoft.com/nav/2012/10/04/excel-buffer-using-open-xml-instead-of-excel-automation-part-1-of-2/
https://blogs.msdn.microsoft.com/nav/2012/10/05/use-open-xml-to-extend-the-excel-buffer-functionality-part-2-of-2/
https://blogs.msdn.microsoft.com/nav/2011/08/18/export-to-excel-on-dynamics-nav-rtc/

Ob das alte Codeunit noch geht, kommt auf einen Versuch an, umarbeiten kann man es auf jeden Fall.
XMLports haben mit Excel nicht direkt zu tun. Ohne Klimmzüge kann man damit nur eine CSV-Datei erzeugen, die je nach Windowseinstellungen dann automatisch mit Excel geöffnet wird.

Re: Aus Excel importieren (DEV)

23. Februar 2018 12:02

Hallo.

Ich habe mich per Remote auf einer virtuellen Maschine auf einen Testsystem von uns verbunden.
Hier habe ich die NAV Development Environment gestartet und ich habe in einem Report 3 neue Automationvariable für den Excelimport angelegt und wollte den komplieren.

Leider habe ich hierbei eine Fehlermeldung!
Fehler kompilieren.PNG


Wie soll ich das jetzt Clientseitig realisieren?

Gruß,
Christian
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aus Excel importieren (DEV)

23. Februar 2018 12:16

Wieso benutzt du Automations und nicht wie oben und in den verlinkten Artikeln beschriebenen Datentyp DotNet?

Ob Automations auf Server oder Client laufen, kann man ggf. mit dem letzten Parameter steuern. Nur benutzen soll man die in der 3-Tier-Welt eigentlich gar nicht mehr, nur wenn es mit DotNet (noch) nicht geht.
CREATE Function (Automation)

Re: Aus Excel importieren (DEV)

23. Februar 2018 13:02

navCH hat geschrieben:Wieso benutzt du Automations und nicht wie oben und in den verlinkten Artikeln beschriebenen Datentyp DotNet?


ok ich versuche es mit Datentyp DotNet. Ich habe nur bisher was Excel betrifft alles mit Automation gemacht.
Ich werde mir die Hilfe nochmal genauer anschauen. Danke!

Gruß
Christian

Re: Aus Excel importieren (DEV)

26. Februar 2018 10:31

Guten Morgen!

Ich habe einen Import mit OpenXML gebaut, so wie Anleitung :wink:
Ich habe in der Test Excel jetzt mal versucht 2 Spalten in der Message Box auszugeben.
Er gibt mir die Spalten untereinander aus. Ich möchte das gern Nebeneinander?
Zwei Spalt.PNG
MessageBox.PNG


Und wie importiere ich das File in eine Tabelle mit Feldern?

Lege ich da pro Feld/Spalte eine eigene ExcelBuffer Variable an?

Beste Grüße,
Christian
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aus Excel importieren (DEV)

26. Februar 2018 11:55

Wo schreibe ich die Insertdata() Funktion rein?

MfG

Re: Aus Excel importieren (DEV)

26. Februar 2018 12:22

Schade das es keine Dataports mehr gibt, das wäre für den Import praktisch gewesen!

Re: Aus Excel importieren (DEV)

26. Februar 2018 12:32

Warum nutzt du nicht einfach einen XML Port?
xmlport.png

(Integer ist Temporär)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aus Excel importieren (DEV)

26. Februar 2018 13:22

navCH hat geschrieben:Wo schreibe ich die Insertdata() Funktion rein?


Oben hattest Du doch geschrieben: Excel-Datei öffnen, (Datensätze) mutieren und dann wieder speichern? Also Excel zum lesen/modifizieren öffnen, an der richtigen Stelle (Zelle) die zusätzliche Info eintragen und dann die Datei speichern?

Re: Aus Excel importieren (DEV)

26. Februar 2018 14:00

navCH hat geschrieben:Schade das es keine Dataports mehr gibt, das wäre für den Import praktisch gewesen!

Normale Textdateien (CSV, feste Feldlängen) wurden schon ab NAV 2009 RTC in XMLports integriert. Leider wurde auch der Name dabei beibehalten.
Infos zu den notwendigen Einstellungen hier (für Export, Import analog)
Walkthrough: Exporting Data from Tables to CSV Files

Re: Aus Excel importieren (DEV)

26. Februar 2018 14:25

Kowa hat geschrieben:
navCH hat geschrieben:Schade das es keine Dataports mehr gibt, das wäre für den Import praktisch gewesen!

Normale Textdateien (CSV, feste Feldlängen) wurden schon ab NAV 2009 RTC in XMLports integriert. Leider wurde auch der Name dabei beibehalten.
Infos zu den notwendigen Einstellungen hier (für Export, Import analog)
Walkthrough: Exporting Data from Tables to CSV Files


Hallo Kowa.
Die URL scheint leider nicht zu funktionieren.

ps. Ich versuche auch gerade einen Report zu programmieren welcher in Tabelle importiert .. sie Bild:
Funk.PNG
void.PNG


Wie kann ich GetValueAtCell() : auf Text setzen?

MfG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aus Excel importieren (DEV)

26. Februar 2018 15:03

navCH hat geschrieben:Die URL scheint leider nicht zu funktionieren.

URL ist korrekt, klappt bei mir.
Alternativ geht auch diese, das ist die aktuelle Doku (ab NAV 2017). Der Inhalt ist hier unverändert.
https://docs.microsoft.com/en-us/dynamics-nav/walkthrough--exporting-data-from-tables-to-csv-files

Re: Aus Excel importieren (DEV)

26. Februar 2018 15:37

Kann evtl. jemand sagen was mit Text001 und ExcelExt gemeint ist?

ServerFileName:=FileManagement.UploadFile(Text001; ExcelExt);

OnQuery.PNG


MfG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aus Excel importieren (DEV)

27. Februar 2018 10:03

navCH hat geschrieben:Kann evtl. jemand sagen was mit Text001 und ExcelExt gemeint ist?

Hast du keinen Zugriff auf Codeunit 419 File Management?

Re: Aus Excel importieren (DEV)

27. Februar 2018 10:59

Guten Morgen!

Kowa hat geschrieben:Hast du keinen Zugriff auf Codeunit 419 File Management?

Doch komme ich rein.

Ich möchte Records aus einem Feld aus einer Excel Tabelle, in eine eigene Tabelle KatalogArtikel inserten.
Dafür muss ich wahrscheinlich ein Evaluate verwenden, um den Text aus der Excel Tabelle in eine Zahl zu konvertieren?
Ich habe dafür eine decimal Var 'listenpreis' angelegt, für das Evaluate, wobei ich den String aus der Zelle an Listenpreis übergebe.
Dann übergebe ich Listenpreis dem Feld aus der Tabelle.
Ich bin mir nicht sicher, aber kann das so aussehen?
Code:
IF KatalogArtikel.Find('+') Then Begin

KatalogArtikel.Hersteller:=Sheet.Range('A'+h).Value;
KatalogArtikel.HerstellerArtikel:=Sheet.Range('B'+h).Value;

Evaluate(listenpreis,Sheet.Range('C'+h).Value);
KatalogArtikel.Listenpreis:=listenpreis;

KatalogArtikel.Insert;
End;


    Name DataType Subtype Length
    App Automation 'Microsoft Excel 14.0 Object Library'.Application
    Sheet Automation 'Microsoft Excel 14.0 Object Library'.Worksheet
    Book Automation 'Microsoft Excel 14.0 Object Library'.Workbook
    tempKatalogArtikelROM Record KatalogArtikel ROM PriImport
    KatalogArtikelROM Record KatalogArtikel ROM PriImport
    h Code 10
    listenpreis Decimal

@Kowa: Sorry, ich stehe unter Zeitdruck, deswegen habe ich mich doch nochmal auf die altmodische Art entschieden! Beim nächsten Report werde ich mal DotNet testen.

Beste Grüße
Christian

Re: Aus Excel importieren (DEV)

27. Februar 2018 11:11

Hallo,

warum benutzt du nicht Tabelle 370 und die Funktionen daraus?

Gruß Fiddi

Re: Aus Excel importieren (DEV)

27. Februar 2018 11:39

Ich habe keine Rotine im Umgang damit.
Aber die Frage ist sicherlich berechtigt!
Ich weiß noch nicht was ich damit alles machen kann. Ich brauche mal paar Stunden Zeit, um mir die Möglichkeiten mit der Tabelle mal anzuschauen.

MfG

Re: Aus Excel importieren (DEV)

27. Februar 2018 11:43

Hallo,

da ist eigentlich alles drin, um eine Excel- Tabelle in NAV einzulesen. Du kannst dann auf die einzelnen Excel- Zellen über die NAV- Tabelle zugreifen.

Gruß Fiddi

Re: Aus Excel importieren (DEV)

27. Februar 2018 13:10

Gibt es eine Funktion, wie ich die Anzahl der Zeilen aus der Exceldatei bekommen kann?

MfG

Re: Aus Excel importieren (DEV)

27. Februar 2018 13:20

Hallo,

RESET und FINDLAST auf die Tabelle sollte reichen.

Gruß Fiddi

Re: Aus Excel importieren (DEV)

27. Februar 2018 17:19

kann ich mit Evaluate von Text in DateTime konvertieren?
Wenn nein, wie bekomme ich die Zahl in DateTime konvertiert?

MfG

Re: Aus Excel importieren (DEV)

27. Februar 2018 17:23

kann ich mit Evaluate von Text in DateTime konvertieren?

Das kommt auf den Text an. :wink:
Wenn nein, wie bekomme ich die Zahl in DateTime konvertiert?

Auch das kommt auf den Text an, der in dem Textfeld steht.

Gruß Fiddi

Re: Aus Excel importieren (DEV)

27. Februar 2018 17:54

fiddi hat geschrieben:
kann ich mit Evaluate von Text in DateTime konvertieren?

Das kommt auf den Text an. :wink:
Wenn nein, wie bekomme ich die Zahl in DateTime konvertiert?

Auch das kommt auf den Text an, der in dem Textfeld steht.
Gruß Fiddi


GueltigAbDatum
09092016


MfG

Re: Aus Excel importieren (DEV)

27. Februar 2018 18:04

Code:
IF KatalogArtikelROM.FINDLAST THEN BEGIN
KatalogArtikelROM.INIT;
KatalogArtikelROM.Hersteller:=Sheet.Range('A'+h).Value;
KatalogArtikelROM.HerstellerArtikel:=Sheet.Range('B'+h).Value;

KatalogArtikelROM.INSERT;
END;


Brauche ich das INIT um in die Tabelle zu schreiben?


MfG