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: 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.

screenshot002.png
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.
  • [IDF] Encoding=, Kodierung der IDF-Datei. IdfNeeded=TRUE erzwingt, dass eine passende IDF oder die Master.idf vorhanden ist.
  • [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=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.

  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.
  4. Fehler: Dasselbe passiert mit dem ErrorPath.
screenshot003.png
Die drei Arbeitsordner: Files (Eingang), Ablage (verarbeitet) und Fehler
screenshot004.png
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: 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”).
screenshot005.png
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: 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.csvArtikel.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.

screenshot006.png
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.|
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.

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: 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.

screenshot008.png
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.

screenshot010.png
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: 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