Zum Inhalt springen
DE EN
Doku-Navigation

Datenimport mit FileImporter & BulkImporter

CSV- und Excel-Daten automatisch nach ESL-Easy einlesen

Einsteiger · ca. 12 Min. Lesezeit

Basiert auf ESLEasy_FileImporter und ESLEasy_BulkImporter V2.3, Stand 2025-09-03

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.

Datenfluss vom ERP-System bis zum Label
Der Datenimport im Überblick: Vom ERP-Export bis zum aktualisierten Label

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_FileImporterESLEasy_BulkImporter
Weg zu den DatenSendet alle Änderungen an den ESLEasy_ServerBenötigt direkten Zugriff auf die ESL-Easy-Datenbank
GeschwindigkeitNormalSchneller, für Massenimport ausgelegt
BesonderheitKann 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: ESLEasy_FileImporter und ESLEasy_BulkImporter 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.

Windows-Editor mit der ESLEasy_FileImporter.ini, sichtbar die Sektionen [LOOP] mit Interval=20, [PATH] mit FilePath, ProcessedPath und ErrorPath sowie [IDF]
Die ESLEasy_FileImporter.ini, die Sektionen [LOOP], [PATH] und [IDF] sind die Basis jeder Konfiguration

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. FilePath ist der überwachte Import-Ordner, ProcessedPath das Ziel für erfolgreich verarbeitete Dateien, ErrorPath für fehlerhafte. Diese drei Ordner sind das Herz des Ablaufs. Ab Werk heißen die Unterordner Files\Filing und Files\Error; dieser Guide benennt sie in Ablage und Fehler um.
  • [IDF] Encoding=, Kodierung der IDF-Datei. IdfNeeded=TRUE erzwingt, dass eine passende IDF oder die Master.idf vorhanden ist (ab Werk steht hier FALSE).
  • [LOG] LogLevel=, Umfang der Protokollierung. Der Importverlauf wird in einer Tages-Log-Datei im Ordner .\Log abgelegt.

Der modulabhängige Block

Nur im FileImporter, Verbindung zum Server:

[ESLEASY_SERVER]
IP=127.0.0.1
Port=49190
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: ESLEasy_FileImporter und ESLEasy_BulkImporter V2.3, „Konfiguration”, S. 5–8.


Schritt 3, Der Ordner-Ablauf

Das ist der Kern des Systems, und er ist bewusst simpel gehalten.

  1. Importdatei kopieren. Legen Sie die Datei (.xls, .xlsx oder .csv) in den FilePath-Ordner. Mehr ist nicht zu tun.
  2. Warten. Das Programm prüft im [LOOP]-Intervall auf neue Dateien und verarbeitet sie automatisch.
  3. Erfolg: Die Datei wird nach ProcessedPath verschoben, in einen neu angelegten Ordner, dessen Name der aktuelle Zeitstempel ist (Format yyyyMMddHHmmssfff, z. B. 20261014172616880). Verschoben wird nur die Importdatei, die IDF bleibt im Eingangsordner.
  4. Fehler: Dasselbe passiert mit dem ErrorPath.
Windows-Explorer im Ordner Files mit den Unterordnern Ablage und Fehler sowie den Dateien Artikel.csv, Artikel.idf und Master.idf
Die drei Arbeitsordner: Files (Eingang), Ablage (verarbeitet) und Fehler
Windows-Explorer im Unterordner 20261014172616880 des Ordners Ablage, darin die verschobene Artikel.csv
Nach erfolgreichem Import: Die Datei liegt im Ablage-Ordner, in einem Unterordner mit Zeitstempel

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: ESLEasy_FileImporter und ESLEasy_BulkImporter 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 __DATAID und __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”).
Windows-Editor mit Artikel.csv: vier Zeilen, jede beginnt mit dem Feld Art-Nr. und der Artikelnummer, danach Beschreibung, Inhalt, Grundpreis, Pfand und Preis mit Textanteilen
Die Importdatei: Die erste Spalte wird später als __DATAID verwendet

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: ESLEasy_FileImporter und ESLEasy_BulkImporter 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","Apfelschorle 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.

Windows-Editor mit Artikel.idf und den Sektionen [CSV], [DATA], [ADDTAG] und [REPLACEVALUE], darin die Zeile __DATAID=Art-Nr.|
Die vollständige Artikel.idf, jede Sektion löst eines der Probleme aus der CSV-Datei

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
ParameterWirkung
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=PUTDATA sagt dem Server, dass die Nutzdaten in die Produktdatenbank sollen, das ist der normale Datenimport. Weitere Befehle: PUTDATALOCATION, PUTREFERENCE, UPDATEDATAID, ADDQUEUETASK. Achtung: __PROGRAM gilt 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.|
__DATAID=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.

Die Zeile __DATAID=Art-Nr.| ist kein Tippfehler. [ADDTAG] __DATAID=<ArtNr> übernimmt den Rohwert der Spalte, also „Art-Nr. 10101“. Die Zeile ArtNr=Art-Nr.| bereinigt nur das Feld ARTNR. Erst die zweite Zeile macht auch aus der __DATAID die reine 10101. Ohne sie landet der Datensatz unter der DataID „Art-Nr. 10101“ in der Produktdatenbank.

Vorher-Nachher der Datenfelder
Wirkung von REPLACEVALUE: Aus „Inhalt/Fl.: 0,33“ wird 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:

SektionFunktion
[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: ESLEasy_FileImporter und ESLEasy_BulkImporter 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.

Der FileImporter läuft nach der Installation als normales Programm, nicht als Windows-Dienst; als Dienst richten Sie ihn mit InstallFileImporterAsService.bat ein. Ein eigenes Log-Fenster gibt es nicht, der Verlauf steht in der Tages-Log-Datei im Ordner LOG.

Windows-Editor mit der Tages-Log-Datei des FileImporters: Prüfung des Ordners, Verarbeitung der vier Zeilen mit PUTDATA, Anlegen des Ablage-Ordners und Verschieben der Artikel.csv
Das Log zeigt den Verarbeitungsverlauf, hier mit LogLevel=1
screenshot009.png
Das Ergebnis: Das Label zeigt die importierten Daten

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
ParameterErklä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.

Windows-Editor mit der [HTTP]-Sektion der INI: Active=TRUE, StartTimes mit vier Uhrzeiten, auskommentiertes StartMins, URL, FileName, DownloadType, Encoding, AutoDetectEncoding und Security
Die [HTTP]-Sektion: Import-Dateien werden zu festen Uhrzeiten selbst abgeholt

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=*.csv filtert, welche Dateien bereitgestellt werden; DeleteAfterUnzip=TRUE löscht das Archiv danach.

Quelle: ESLEasy_FileImporter und ESLEasy_BulkImporter 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:

WegWann sinnvollDoku
Datei-Import (dieser Guide)Das ERP kann exportieren; Daten werden in ESL-Easy gespeichertFileImporter/BulkImporter
UniversalGatewayEchtzeit-Abfrage; keine Daten werden lokal gespeichertUniversalGateway
RequestPolling bei passiven SystemenESLEasy_Request
FileTransferDateiübertragung an den Server ohne FTPFileTransfer
REST-APIDirekte Befehle an den ESLEasy_ServerAPI

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