Doku-Navigation
Keine Treffer. Schauen Sie auch in die FAQ.
Datenimport mit FileImporter & BulkImporter
CSV- und Excel-Daten automatisch nach ESL-Easy einlesen
Voraussetzungen
- ESL-Easy installiert, ESLEasy_Server läuft
- Zugriff auf das Dateisystem des ESL-Easy-Servers
- Ein CSV- oder Excel-Export aus Ihrem ERP-System
Der schnellste Weg, Ihr Warenwirtschaftssystem an ESL-Easy anzubinden: Eine Datei in einen Ordner legen, ESL-Easy erkennt die Änderungen und aktualisiert alle betroffenen Labels automatisch.
Worum es geht
ESL-Easy liest Daten aus Excel-, CSV- und XML-Quellen ein. Dafür gibt es zwei Module: den FileImporter und den BulkImporter. Der Ablauf ist bei beiden gleich:
Sie legen eine Datei in einen überwachten Ordner. ESL-Easy verarbeitet sie automatisch, erkennt, was sich gegenüber dem letzten Import geändert hat, und aktualisiert alle Labels, die mit diesen Daten verknüpft sind.
Quelle: ESLEasy_FileImporter und ESLEasy_BulkImporter V2.3 (03.09.2025), Abschnitt „Allgemeines”, S. 4–5.
Schritt 1, FileImporter oder BulkImporter?
Diese Entscheidung fällt vor der Konfiguration, denn sie bestimmt, welche INI-Sektionen Sie brauchen.
| ESLEasy_FileImporter | ESLEasy_BulkImporter | |
|---|---|---|
| Weg zu den Daten | Sendet alle Änderungen an den ESLEasy_Server | Benötigt direkten Zugriff auf die ESL-Easy-Datenbank |
| Geschwindigkeit | Normal | Schneller, für Massenimport ausgelegt |
| Besonderheit | Kann zusätzlich direkte Ausführungsbefehle senden (z. B. gezielte Label-Updates per Importdatei) | — |
| Relevante INI-Sektion | [ESLEASY_SERVER] | [SQL] / [MSSQL] / [FIREBIRD] |
Faustregel: Große Stammdatenmengen zyklisch einspielen → BulkImporter. Import plus Steuerbefehle → FileImporter.
Excel-Voraussetzung: Vor Programmversion 1.2.0.0 war ein lokal installiertes Microsoft Excel nötig (empfohlen Excel 2019). Ab Version 1.2.0.0 wird kein Excel mehr benötigt, weder für XLS noch für XLSX. Ab Programmversion 1.2.0.0 wird .NET Framework 4.8 benötigt.
Quelle: V2.3, „Allgemeines — Unterschied der Module”, S. 4–5.
Schritt 2, Die INI-Datei konfigurieren
Die Betriebsparameter stehen in ESLEasy_FileImporter.ini bzw. ESLEasy_BulkImporter.ini.
Die Basis-Sektionen
[LOOP]
Interval=20 ; Sekunden zwischen den Prüfläufen
[PATH]
FilePath=C:\ESLEasy\ESLEasy_FileImporter\Files
ProcessedPath=C:\ESLEasy\ESLEasy_FileImporter\Files\Ablage
ErrorPath=C:\ESLEasy\ESLEasy_FileImporter\Files\Fehler
[IDF]
Encoding=UTF8
IdfNeeded=TRUE
[LOG]
LogLevel=1
[LOOP] Interval=, in welchem Sekunden-Intervall das Programm auf neue Dateien prüft.[PATH], die drei Arbeitsordner.FilePathist der überwachte Import-Ordner,ProcessedPathdas Ziel für erfolgreich verarbeitete Dateien,ErrorPathfür fehlerhafte. Diese drei Ordner sind das Herz des Ablaufs.[IDF] Encoding=, Kodierung der IDF-Datei.IdfNeeded=TRUEerzwingt, dass eine passende IDF oder dieMaster.idfvorhanden ist.[LOG] LogLevel=, Umfang der Protokollierung. Der Importverlauf wird in einer Tages-Log-Datei im Ordner.\Logabgelegt.
Der modulabhängige Block
Nur im FileImporter, Verbindung zum Server:
[ESLEASY_SERVER]
IP=127.0.0.1
Port=49890
User=IXOP
Pass=POXI
EncodingRead=UTF8
EncodingWrite=UTF8
Encryption=false
Nur im BulkImporter, Verbindung zur Datenbank:
[SQL]
Type=Firebird
DateTimeFormat=dd.MM.yyyy HH:mm:ss
[FIREBIRD]
ConnectionString=Server=127.0.0.1;Port=49125;Charset=UTF8;User ID=SYSDBA;Password=<PASSWORD>;Database=C:\ERP\ERP.FDB
passencrypted=TRUE
Alternativ steht unter [MSSQL] ein ConnectionString für Microsoft SQL Server zur Verfügung.
Quelle: V2.3, „Konfiguration”, S. 5–8.
Schritt 3, Der Ordner-Ablauf
Das ist der Kern des Systems, und er ist bewusst simpel gehalten.
- Importdatei kopieren. Legen Sie die Datei (
.xls,.xlsxoder.csv) in den FilePath-Ordner. Mehr ist nicht zu tun. - Warten. Das Programm prüft im
[LOOP]-Intervall auf neue Dateien und verarbeitet sie automatisch. - Erfolg: Die Datei wird nach ProcessedPath verschoben, in einen neu angelegten Ordner, dessen Name der aktuelle Zeitstempel ist.
- Fehler: Dasselbe passiert mit dem ErrorPath.
Wenn eine Datei nicht verschwindet: Kann eine Datenzeile nicht gesendet (FileImporter) bzw. nicht in die Datenbank geschrieben werden (BulkImporter, z. B. bei falschem ConnectionString), wird die Verarbeitung abgebrochen. Die Datei bleibt im FilePath liegen und wird beim nächsten Durchlauf erneut verarbeitet.
Das ist kein Hänger, sondern der Wiederholungsversuch. Schauen Sie ins Log unter .\Log.
Zeitgesteuerter Import
Endet der Dateiname mit @ plus einem Timestamp im Format yyyyMMddHHmmss, bleibt die Datei im Import-Ordner liegen, bis der Zeitpunkt erreicht ist.
MasterData@20231102170000.xlsx
→ Import erst am 02.11.2023 ab 17:00 Uhr.
Die verwendeten Masken lassen sich in der INI unter [IMPORTTIMESTAMP] anpassen (Defaults: TimestampMask=yyyyMMddHHmmss, TimestampSeparator=@).
Quelle: V2.3, „Ordner-Struktur und Ablauf”, S. 8–9.
Schritt 4, Dateiaufbau und Pflichtfelder
Damit ESL-Easy die Daten verwerten kann, braucht es pro Datensatz mindestens ein Schlüsselfeld: die __DATAID. Zusätzlich sollte eine Beschreibung als __DESCRIPTION mitgegeben werden.
Es gibt zwei Wege:
- Direkt in der Datei: Benennen Sie zwei Spalten einfach
__DATAIDund__DESCRIPTION, sie werden automatisch intern verarbeitet. - Über die IDF-Datei: Der Regelfall, weil sich der ERP-Export meist nicht ändern lässt. Sie hinterlegen die Zuordnung in der IDF (z. B. „Feld Artikel dient als
__DATAID”).
Unzulässige Zeichen in Feldnamen: <, >, " (Anführungszeichen), *, \. Ein Leerfeld ist möglich, aber nicht empfohlen.
Feldnamen dürfen nicht mit zwei Unterstrichen beginnen, dieser Namensraum ist für die interne Verarbeitung reserviert (z. B. __DATAID).
Quelle: V2.3, „Dateiaufbau”, S. 9–10.
Schritt 5, Die IDF-Datei
Die IDF ist der eigentliche Hebel. Sie brauchen sie immer dann, wenn die Datendatei nicht direkt verarbeitbar ist (z. B. die __DATAID-Spalte nicht erkennbar ist) oder wenn Daten beim Import verändert werden müssen.
Die eine Regel, die Sie sich merken müssen:
Die IDF trägt den Namen der Importdatei plus die Endung .IDF und liegt im selben FilePath-Ordner.
Artikel.csv → Artikel.idf
Das Ausgangsproblem
Unsere Beispieldatei enthält keine sauberen Werte, sondern Text mit eingebetteten Zahlen:
"Art-Nr. 10101","Becks Pils 24 x 0.33 l MW","Inhalt/Fl.: 0,33","EUR/l 1,89","zzgl. Pfand EUR: 3,42","EUR/Gebinde: 14,99"
Damit kann ESL-Easy nichts anfangen. Es fehlt ein Header, die Textanteile müssen raus, und die Artikelnummer muss als __DATAID erkannt werden. Genau das erledigt die IDF.
Die IDF Sektion für Sektion
[CSV], Trennzeichen, Anführungszeichen, Header vorgeben
[CSV]
Separator=,
QuotationMark=TRUE
Header="ArtNr","Beschreibung","Inhalt","Grundpreis","Pfand","Preis"
Bei QuotationMark=TRUE müssen alle Felder (Header und Daten) mit dem QuotationMarkChar starten und enden. Die Zeichen werden beim Import entfernt.
[DATA], das Import-Verhalten steuern
[DATA]
DeleteBeforeImport=FALSE
TrimAll=TRUE
UpdateLabels=TRUE
| Parameter | Wirkung |
|---|---|
DeleteBeforeImport= | TRUE = vorhandene Daten in ESL-Easy werden vor dem Import gelöscht |
TrimAll= | Führende Leerzeichen aus allen Datenfeldern entfernen |
UpdateLabels= | Betroffene Labels werden nach dem Import bei Datenänderung aktualisiert, diesen Schalter wollen Sie fast immer |
PreserveExistingData= | TRUE = vorhandene Tags einer DataID bleiben erhalten, wenn sie in den Importdaten fehlen |
TrimStart= / TrimEnd= | Zeichen, die am Anfang/Ende jedes Feldes entfernt werden |
[ADDTAG], die Pflichtfelder ergänzen
[ADDTAG]
__PROGRAM=PUTDATA
__DATAID=<ArtNr>
__DESCRIPTION=<Beschreibung>
__STARTTIME=%%TODAY%%
__PROGRAM=PUTDATAsagt dem Server, dass die Nutzdaten in die Produktdatenbank sollen, das ist der normale Datenimport. Weitere Befehle:PUTDATALOCATION,PUTREFERENCE,UPDATEDATAID,ADDQUEUETASK. Achtung:__PROGRAMgilt nur für den FileImporter.__DATAID=<ArtNr>, die spitzen Klammern verweisen auf eine Spalte der Importdaten. Mehrere Spalten und freier Text sind kombinierbar.__STARTTIME=%%TODAY%%, Verarbeitungszeitpunkt. Ohne Angabe: sofort.
[REPLACEVALUE], die Textanteile entfernen
[REPLACEVALUE]
ArtNr=Art-Nr.|
Inhalt=Inhalt/Fl.:|
Grundpreis=EUR/l|
Pfand=zzgl. Pfand EUR:|
Preis=EUR/Gebinde:|
Die Syntax lautet Suchtext|Ersatz. Wir lassen den Ersatz leer, damit wird Inhalt/Fl.: durch nichts ersetzt, und übrig bleibt der reine Wert 0,33.
Weitere IDF-Sektionen im Überblick
Diese Sektionen brauchen Sie nicht für den ersten Import, aber früher oder später:
| Sektion | Funktion |
|---|---|
[CHANGETAG] | Spaltennamen der Importdatei durch neue Namen ersetzen (z. B. Regalpl. 1=REGALPLATZ1) |
[IMPORTTAG] | Nur die angegebenen Spalten importieren; leer = alle |
[DELETETAG] | Die angegebenen Spalten nicht importieren |
[TRIM] | Bei bestimmten Spalten Zeichen vorne und hinten entfernen |
[FILENAMETAG] | Tags zufügen, wenn eine Zeichenkette im Dateinamen vorkommt |
[DATETIME] | DateFormat= und TimeFormat=; leer = Betriebssystem-Einstellungen |
[ENCODING] | Kodierung der Datendatei (DEFAULT, ASCII, UTF8, UTF7, UTF32, UNICODE, BIGENDIANUNICODE) |
[XML] | Definiert, welche Felder wie aus einer XML-Struktur verarbeitet werden |
Quelle: V2.3, IDF-Referenz S. 10–22; vollständiges Beispiel S. 25–27.
Schritt 6, Der erste Import
Beide Dateien, Artikel.csv und Artikel.idf, in den FilePath-Ordner legen. Dann warten.
ESL-Easy hat die Änderung erkannt und alle Labels aktualisiert, die mit dieser DataID verknüpft sind.
Schritt 7, Import automatisieren
In der Praxis kopiert niemand Dateien von Hand. Beide Module können Importdateien zu definierten Zeitpunkten selbst abholen.
HTTP-Download
[HTTP]
Active=TRUE
StartTimes=01:00,02:00,03:00,16:15
;StartMins=00,30
URL=https://www.domain.com/Data
FileName=Import.csv
DownloadType=DATA
Encoding=UTF8
AutoDetectEncoding=FALSE
Security=TRUE
| Parameter | Erklärung |
|---|---|
StartTimes= | Eine oder mehrere exakte Uhrzeiten pro Tag |
StartMins= | Alternativ: Minuten, zu denen in jeder Stunde geladen wird |
DownloadType= | FILE = komplette Datei binär laden; DATA = empfangene Daten gemäß Encoding interpretieren und konvertieren |
Security= | TRUE = bei HTTPS werden SSL3, TLS, TLS11, TLS12 akzeptiert, mit Zertifikatsprüfung |
Nur StartTimes= oder StartMins= angeben, nicht beide.
Weitere Transportwege
[FTP]/[SFTP], Download vor dem Import. SFTP-Authentifizierung per User/Passwort, per Private-Key-File (.pem) oder per X509Certificate.[ZIP], Werden die Importdaten als ZIP geliefert, entpackt ESL-Easy sie automatisch.ProcessFiles=*.csvfiltert, welche Dateien bereitgestellt werden;DeleteAfterUnzip=TRUElöscht das Archiv danach.
Quelle: V2.3, „Download von Import-Daten über eine URL”, S. 27–28.
Ist der Datei-Import der richtige Weg?
ESL-Easy bietet mehrere Wege der Datenanbindung. Zur Einordnung:
| Weg | Wann sinnvoll | Doku |
|---|---|---|
| Datei-Import (dieser Guide) | Das ERP kann exportieren; Daten werden in ESL-Easy gespeichert | FileImporter/BulkImporter |
| UniversalGateway | Echtzeit-Abfrage; keine Daten werden lokal gespeichert | UniversalGateway |
| Request | Polling bei passiven Systemen | ESLEasy_Request |
| FileTransfer | Dateiübertragung an den Server ohne FTP | FileTransfer |
| REST-API | Direkte Befehle an den ESLEasy_Server | API |
Die Wege sind kombinierbar: ESL-Easy führt lokale und externe Daten immer zu einem Datensatz zusammen.
Häufige Stolpersteine
Die Datei verschwindet nicht aus dem Import-Ordner.
Die Verarbeitung wurde abgebrochen, meist wegen eines Verbindungsproblems (falscher ConnectionString beim BulkImporter, Server nicht erreichbar beim FileImporter). Die Datei wird beim nächsten Durchlauf erneut verarbeitet. Log prüfen.
Der Import läuft, aber die Labels ändern sich nicht.
Prüfen Sie [DATA] UpdateLabels=TRUE in der IDF.
Feldnamen werden nicht erkannt.
Feldnamen dürfen nicht mit zwei Unterstrichen beginnen und keine der Zeichen < > " * \ enthalten.
Excel-Import schlägt fehl.
Programmversion prüfen: Erst ab 1.2.0.0 kommt der Importer ohne lokal installiertes Excel aus.
Zum Weiterlesen
- Vollständige IDF-Referenz, alle Sektionen und Parameter: Original-PDF ESLEasy_FileImporter und ESLEasy_BulkImporter 2.3_DE, S. 10–22.
- XML-Import, inklusive CDATA und TEXT: ebenda, S. 22–24.
- Nächster Guide: Ihr erstes Template in 15 Minuten
Quelldokument: ESLEasy_FileImporter und ESLEasy_BulkImporter · v2.3