Daten aus einer CSV- oder Excel-Datei in Dolibarr importieren
Der Import-Assistent von Dolibarr 24 mit echten CSV- und Excel-Dateien getestet: Geschäftspartner, Kontakte, Produkte, Lagerbestand, Lieferantenpreise, Kategorien, Aktualisierung per Schlüssel und die genauen Meldungen der häufigsten Fehler.
Dolibarr kann Kunden, Kontakte, Produkte, Lagerbestände oder Einkaufspreise aus einer Tabelle übernehmen, über einen Assistenten in vier Schritten. Er schreibt allerdings direkt in die Tabellen: Er tut nicht alles, was die Eingabemasken tun (keine Lagerbewegung, keine Preishistorie), und er ist streng beim Dateiformat.
Diese Anleitung folgt dem Assistenten von Dolibarr 24.0.2 mit echten CSV- und Excel-Dateien, die am 14. Oktober 2026 auf einer Testinstanz importiert wurden, darunter rund zwanzig absichtlich herbeigeführte Fehler, um die genauen Meldungen festzuhalten.
Wo der Assistent zu finden ist
Menü Tools › Importe/Exporte › Neuer Import. Fehlt der Menüpunkt, aktivieren Sie das Modul Datenimporte unter Start › Einstellungen › Module/Anwendungen.
Der Assistent hat vier Reiter:
- Schritt 1: der zu importierende Datensatz (Geschäftspartner, Produkte…). Es werden nur Datensätze aktivierter Module angeboten: Aktivieren Sie zuerst Produkte, Lagerverwaltung oder Lieferanten, wenn Sie sie brauchen.
- Schritt 2: die Datei, hochgeladen mit Datei hinzufügen und dann mit dem Pfeil rechts ausgewählt.
- Schritt 3: die Zuordnung der Spalten der Datei zu den Feldern von Dolibarr.
- Schritt 4: die Optionen, dann Simulation Datenimport starten und zum Schluss Datenimport starten.
Die meistgenutzten Datensätze, mit ihrer genauen Bezeichnung in Schritt 1:
| Datensatz | Was er anlegt |
|---|---|
| Geschäftspartner (Organisationen/natürliche Personen) und Attribute | Kunden, Interessenten und Lieferanten |
| Kontakte/Adressen (zusätzliche Kontakte/Adressen von Geschäftspartnern) und Attribute | Kontakte, über den Namen einem Geschäftspartner zugeordnet |
| Produkte | Produkte und Leistungen, mit Verkaufspreis |
| Warenlager | Warenlager |
| Lagerbestände und Lagerort der Produkte | Bestandsmengen je Warenlager |
| Lieferantenpreise (von Produkten oder Leistungen) | Einkaufspreise |
| Liste der Kategorien | Kategorien |
| Zahlungsmittel von Geschäftspartnern (Bankkonten) | die Bankverbindungen der Geschäftspartner |
Und Kontoauszüge?
Der Assistent von Dolibarr 24.0.2 importiert sie nicht. Mit aktiviertem Modul Banken bietet die Liste auf der Bankseite nur die Bankverbindungen der Geschäftspartner an: Es gibt keinen Datensatz für die Buchungen eines Kontoauszugs. Für den Import eines Auszugs braucht es also eine Entwicklung oder ein Zusatzmodul; wir haben keines getestet.
Die Reihenfolge
Eine Datei verweist oft auf Einträge aus einer anderen: Ein Kontakt nennt den Namen seines Geschäftspartners, eine Bestandszeile die Referenz des Produkts und des Warenlagers. Gibt es diesen Eintrag noch nicht, wird die Zeile abgelehnt. Daher die Reihenfolge, die wir ohne Fehler eingehalten haben:
- Geschäftspartner;
- Kontakte;
- Produkte;
- Warenlager;
- Lagerbestände;
- Lieferantenpreise;
- Kategorien.
Mit der Vorlagendatei beginnen
In Schritt 2 bietet Dolibarr Beispieldatei herunterladen an, als CSV oder Excel. Die Datei enthält:
- eine Kopfzeile in Ihrer Sprache, mit dem Feldcode in Klammern:
Name des Geschäftspartners* (s.nom),Länderkennung (s.fk_pays)… Das Sternchen kennzeichnet Pflichtfelder; - eine zweite Beispielzeile, die beschreibt, was erwartet wird (
0 (closed) / 1 (active)usw.).
Die CSV-Datei verwendet das Komma als Trennzeichen und die Kodierung UTF-8.
Lassen Sie die Kopfzeilen, wie sie sind. In Schritt 3 erkennt Dolibarr den Code in Klammern
(oder eine Bezeichnung, die genau seiner eigenen entspricht, etwa Stadt) und ordnet die Spalten
selbst zu: In unserem Test wurden die 14 Spalten einer Geschäftspartner-Datei ohne jeden Eingriff
zugeordnet, einschließlich eines zusätzlichen Attributs. Mit eigenen Überschriften („Firma“, „Ist
Kunde“) muss alles von Hand zugeordnet werden.
Löschen Sie danach die Beispielzeile und die nicht benötigten Spalten und tragen Sie Ihre Daten ein. Die Kopfzeile stört nicht: In Schritt 4 beginnt Grenzbereich (von - bis) standardmäßig bei 2.
Schritt für Schritt, mit einer Geschäftspartner-Datei
Schritt 2. Die Datei darf die Upload-Grenze von Dolibarr nicht überschreiten, nach einer neuen Installation 2.048 KB (der Tooltip neben der Schaltfläche zeigt sie an). Darüber scheitert das Hochladen mit „Fehler, konnte Datei nicht speichern.“. Die Grenze wird unter Start › Einstellungen › Sicherheit, Reiter Dateien, geändert (siehe unsere Installationsanleitung mit Docker, die diese Einstellung beschreibt).
Schritt 3. Prüfen Sie zuerst die Zeile Optionen für CSV-Format: Das Feld-Trennzeichen muss das Ihrer Datei sein (siehe unten, die häufigste Fehlerursache). Prüfen Sie dann jede Auswahlliste. Unter der Tabelle steht entweder „Alle Pflicht-Zielfelder sind zugeordnet“ oder „Einige Pflicht-Zielfelder sind nicht zugeordnet“, gefolgt von deren Namen.
Dieser Hinweis ist nur eine Warnung: Der Import läuft trotzdem. In unserem Test wurde ein Geschäftspartner ohne die Spalten Kunde* und Lieferant* weder als Kunde noch als Lieferant angelegt. Lesen Sie ihn.
Schritt 4. Drei Einstellungen: die zu importierenden Zeilen, der Schlüssel (Spalte) für Aktualisierung (siehe unten) und der Importmodus. Dann Simulation Datenimport starten.
Die Simulation führt den Import wirklich aus und macht ihn dann rückgängig: Nichts bleibt in der Datenbank (wir haben die Geschäftspartner vorher und nachher gezählt). Ist alles in Ordnung, zeigt sie „Simulationsergebnis: Kein Fehler“ und die Zahl der Zeilen, die eingefügt und aktualisiert werden. Andernfalls listet sie die Fehler Zeile für Zeile auf, und die Schaltfläche Datenimport starten ist ausgegraut: „Sie müssen alle Fehler korrigieren, bevor Sie den endgültigen Import ausführen können.“
Es gilt alles oder nichts: Eine einzige fehlerhafte Zeile blockiert die ganze Datei. Korrigieren Sie die Datei, laden Sie sie erneut hoch und starten Sie die Simulation noch einmal.
Der Import. Datenimport starten zeigt die Zahl der eingefügten und geänderten Zeilen und eine
Importnummer (zum Beispiel 20261014131140), die im Feld import_key jedes angelegten oder
geänderten Eintrags gespeichert wird. Notieren Sie sie: Der Assistent hat keine Schaltfläche, um
einen Import rückgängig zu machen, und mit dieser Nummer lässt sich in der Datenbank wiederfinden,
was er geschrieben hat. Machen Sie vor einem großen Import eine Sicherung: Dolibarr sichern und
wiederherstellen.
Beginnen Sie für die nächste Datei wieder mit Neuer Import. In unserem Test führte die direkte Rückkehr zu Schritt 2, um eine andere Datei zu wählen, dazu, dass Dolibarr die Zuordnung der vorherigen Datei erneut anwendete, mit unsinnigen Fehlern als Folge.
Neu in 24: der Importmodus
Dolibarr 24 fügt in Schritt 4 einen Importmodus hinzu:
- Gesicherter Modus (langsamer), die Voreinstellung: Dolibarr löst für jede Zeile die automatischen Aktionen aus, die eine Eingabe am Bildschirm auslösen würde. Mit dem Modul Agenda hat unser Import von 5 Geschäftspartnern 5 Ereignisse „Geschäftspartner … erstellt“ angelegt, eine Aktualisierung Ereignisse „Geschäftspartner … geändert“;
- Schnellmodus (schneller): keine automatische Aktion Zeile für Zeile. Unser Import von 2 Geschäftspartnern in diesem Modus hat kein Ereignis angelegt.
Die Simulation löst diese Aktionen nie aus. Bleiben Sie beim gesicherten Modus, außer bei einer sehr großen Datei, für die Sie weder Ereignisse noch Benachrichtigungen wollen.
Einträge aktualisieren statt neu anlegen
Ohne Schlüssel legt jede Zeile einen Eintrag an. Wer dieselbe Datei erneut importiert, erzeugt also
Dubletten: In unserem Test wurden die 5 Geschäftspartner ein zweites Mal angelegt (und diejenigen mit
der Kundennummer auto erhielten eine neue Nummer).
Um bestehende Einträge zu ändern, wählen Sie in Schritt 4 einen Schlüssel (Spalte) für Aktualisierung. Für jede Zeile sucht Dolibarr einen Eintrag mit demselben Wert:
- ein Eintrag gefunden: er wird aktualisiert;
- keiner: die Zeile legt einen neuen Eintrag an (in unserem Test 2 Geschäftspartner aktualisiert, 1 angelegt);
- mehrere: Fehler, laut Sprachdatei „Mehrere Ergebnisse wurden mit diesen Filtern gefunden: …“.
Welche Schlüssel angeboten werden, hängt vom Datensatz ab: für Geschäftspartner Name des Geschäftspartners, PLZ, E-Mail, Kundennummer, Lieferantennummer, die Buchungskonten und die Identifikationsnummern des Unternehmens; für Produkte die Ref.Nr.; für Lagerbestände Produkt und Warenlager. Nehmen Sie einen eindeutigen Wert wie die Kundennummer, eine Registernummer oder die Referenz: Ein Name kann zweimal vorkommen.
Zwei Vorsichtsmaßnahmen, beide geprüft:
- Alle zugeordneten Spalten werden überschrieben, auch leere Zellen. Wir haben die Telefonnummer eines Geschäftspartners mit einer Datei aktualisiert, deren E-Mail-Spalte leer war: Seine E-Mail-Adresse wurde gelöscht. Spalten, die in der Datei fehlen, bleiben unberührt (das zusätzliche Attribut „Secteur“ blieb erhalten). Für eine Aktualisierung gehören nur der Schlüssel und die zu ändernden Spalten in die Datei.
- Die Schlüsselspalte muss zugeordnet und gefüllt sein, sonst antwortet die Simulation „You request to search duplicates on field nom but no value was provided for this field on this line.“ (auf Englisch, auch in der deutschen Oberfläche).
Hat ein Import bereits doppelte Geschäftspartner oder Kontakte erzeugt, findet unser Modul Dublettenerkennung sie und bietet an, sie zusammenzuführen.
Häufige Fehler, mit der genauen Meldung
Das Trennzeichen
Dolibarr geht vom Komma aus. Enthält die erste Zeile kein Komma, aber mehr als zwei Semikolons, wechselt es von selbst zum Semikolon. Die geprüfte Folge: Eine Semikolon-Datei mit drei Spalten oder weniger (typischerweise eine Bestandsdatei) wird nicht erkannt, und alles landet in einer einzigen Spalte.
Die Abhilfe: Geben Sie in Schritt 3 ; in Feld-Trennzeichen ein, klicken Sie Aktualisieren
und ordnen Sie die Spalten neu zu, denn Dolibarr hat die Zuordnung geleert (oder unvollständig
gelassen). Für eine Datei mit Tabulatoren geben Sie \t ein. Die Voreinstellung wird in der
Konfiguration des Moduls geändert (Zahnrad von Datenimporte): „CSV-Trennzeichen
(Standardmäßig)“.
Ein weiterer Fall: In einer Komma-Datei verschiebt eine Adresse wie „Zone artisanale, bâtiment B“ ohne Anführungszeichen alle folgenden Spalten. Die Meldung zeigt dann nur die Folge: „Feld H: ‘Strasbourg’ ist kein Wert in Feld code von Länder“.
Ein sicheres Zeichen: „Simulationsergebnis: Kein Fehler“ mit „Anzahl der einzufügenden Zeilen: 0“. Keine Spalte ist zugeordnet.
Die Kodierung
Speichern Sie die CSV-Datei in UTF-8. Wir haben eine in Windows-1252 kodierte Datei importiert: Umlaute und Akzente kamen durch („Hôtel à l’Étoile“), aber das €-Zeichen, „œ“, der typografische Apostroph ’ und der Gedankenstrich – wurden zu unsichtbaren Zeichen. „Société Œnologique d’Alsace“ wurde zu „Société nologique dAlsace“, ohne jeden Fehler in der Simulation. Eine UTF-8-Datei mit BOM (eine unsichtbare Markierung am Dateianfang) lief ohne Probleme durch, ebenso eine ISO-8859-1-Datei ohne diese Zeichen.
Datumsangaben
Format JJJJ-MM-TT. Ein Datum in einem anderen Format wird abgelehnt:
Feld G (Wert '14/10/2026' passt nicht zur Regex-Regel ^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$)
„Feld G“ bezeichnet die Spalte G Ihrer Datei.
Zahlen
Dezimalpunkt, ohne Leerzeichen: 12.50. In einem Produktpreis wird 12,50 mit „Data truncated for
column ‘price’ at row 1“ abgelehnt. Manche Felder wandeln das Komma um (das Kapital eines
Geschäftspartners: aus 12 500,50 wurde 12500,5), andere nicht: Verlassen Sie sich nicht darauf.
Pflichtfelder und codierte Werte
| Was die Datei enthielt | Meldung |
|---|---|
| Leerer Name des Geschäftspartners | In der Quelldatei fehlen Pflichtdaten in der Spalte 1. |
Kunde = Oui |
Feld E (Wert ‘Oui’ passt nicht zur Regex-Regel ^[0|1|2|3]) |
Länderkennung = France |
Feld D: ‘France’ ist kein Wert in Feld code von Länder |
| Zweimal dieselbe Kundennummer | Duplicate entry ‘CODE-DOUBLE-1’ for key ‘uk_societe_code_client’ |
Anrede = Monsieur |
Data too long for column ‘civility’ at row 1 |
Die erwarteten Werte:
- Kunde: 0 (weder Kunde noch Interessent), 1 (Kunde), 2 (Interessent), 3 (Kunde und Interessent); Lieferant: 0 oder 1; Status: 1 (aktiv) oder 0 (geschlossen);
- Länderkennung: der ISO-Code,
DE,AT,CH,FR; - Anrede eines Kontakts: der Code aus dem Wörterbuch,
MR,MME,MLE,MTREoderDR; - Kundennummer oder Lieferantennummer:
auto, damit Dolibarr die nächste Nummer vergibt (unsere Geschäftspartner erhieltenCU2610-00001,CU2610-00002… mit der Standardnummerierung). Leere Zelle oder keine Spalte: gar keine Nummer.
Einträge, die über Namen oder Referenz bezeichnet werden
Ein Kontakt wird seinem Geschäftspartner über dessen genauen Namen zugeordnet. Ein Tippfehler ergibt „Das Feld A : ’ Boulangerie Kiefer ’ ist keine Kunde Referenz“. Ein doppelt vorhandener Name (eine Dublette) ergibt laut Sprachdatei „Mehrere Datensätze gefunden bei der Suche von Ref.Nr. … Es ist daher unklar, welche ID verwendet werden soll.“
Eine Referenz, die nur aus Ziffern besteht, wird als interne ID gelesen. Unser Produkt mit der
Referenz 1001 (interne ID 9) konnte keinen Bestand erhalten: Dolibarr suchte das Produkt Nr. 1001,
daher „Cannot add or update a child row: a foreign key constraint fails“. Mit ref:1001 in der
Spalte war das Problem gelöst. Laut Code gilt die Regel für jede Spalte, die auf einen anderen
Eintrag verweist (Produkt, Geschäftspartner, Warenlager, Kategorie).
Zusätzliche Attribute
Zusätzliche Attribute (Extrafelder) erscheinen als Spalten am Ende der Liste, unter ihrer
Bezeichnung: Secteur (extra.secteur) in der Vorlagendatei. In unserem Test wurden sie ohne
besondere Einstellung mit den Geschäftspartnern importiert.
Excel-Dateien (.xlsx)
Der Assistent liest das Format Excel 2007 (.xlsx) direkt. Mit einer von LibreOffice gespeicherten Datei haben wir festgestellt:
- eine Formel wird als solche gelesen, nicht ihr Ergebnis: „Incorrect double value: ‘=1.5*2’ for column … price“. Ersetzen Sie Formeln vor dem Import durch ihre Werte;
- eine Datumszelle kommt als
2026-10-01 00:00:00an: angenommen für das Erstellungsdatum eines Geschäftspartners, abgelehnt für das eines Produkts (dessen Regel keine Uhrzeit zulässt). Tragen Sie Datumsangaben als Text im Format JJJJ-MM-TT ein; - eine als Zahl eingegebene Postleitzahl verliert ihre führende Null: aus
06000wurde6000. Formatieren Sie die Spalte als Text.
Laut Code wird nur das aktive Tabellenblatt der Arbeitsmappe gelesen.
Produkte: Bruttopreis und Historie ziehen nicht mit
Der Import schreibt den Preis so, wie er ist, ohne ihn neu zu berechnen:
- mit nur einem Verkaufspreis (ohne Steuern) (1,20) bleibt der Bruttopreis in der Datenbank bei 0, und die Preishistorie ist leer. In unserem Test hat nur das Öffnen des Reiters Verkaufspreis den Bruttopreis neu berechnet und die erste Zeile der Historie angelegt (Produktkarte und Produktliste änderten nichts); ein Produkt, dessen Reiter niemand öffnet, behält einen Bruttopreis von 0;
- mit beiden Spalten (ohne und inkl. Steuern) werden beide Werte unverändert gespeichert: Für ihre Stimmigkeit sind Sie selbst verantwortlich;
- einen Preis per Import aktualisieren (Schlüssel Ref.Nr.) hat den Nettopreis geändert (1,201,50), aber der Bruttopreis blieb bei 1,44 und die Historie hat sich nicht bewegt. Um einzelne Preise zu ändern, nutzen Sie den Reiter Verkaufspreis des Produkts.
Die Spalte PriceBaseType* ist Pflicht: HT (netto) oder TTC (brutto).
Lagerbestand: Mengen, keine Bewegungen
Der Datensatz Lagerbestände und Lagerort der Produkte schreibt die Menge je Warenlager direkt. In unserem Test 40 Hefte in Straßburg und 15 in Colmar: Das Produkt zeigt 55 auf Lager, aber „Letzte Bewegung: Keine“, die Bewegungsliste ist leer, und der gewichtete Durchschnittswert wird nicht berechnet.
Dasselbe Produkt im selben Warenlager erneut zu importieren scheitert („Duplicate entry ‘6-3’ for key ‘uk_product_stock’“); mit den beiden Schlüsseln Produkt und Warenlager wird die Menge ersetzt (200180), nicht addiert.
Für einen Anfangsbestand, dessen Herkunft nachvollziehbar bleiben soll, nehmen Sie besser eine Inventur, die echte Bewegungen anlegt: siehe Anfangsbestand erfassen.
Kategorien: die Liste lässt sich importieren, die Verknüpfungen nicht (24.0.2)
Der Datensatz Liste der Kategorien funktioniert. Der Typ ist 0 für Produkte, 1 für
Lieferanten, 2 für Kunden/Interessenten (die Vorlagendatei nennt die vollständige Liste). Als
übergeordnete Kategorie tragen Sie bei einer Kategorie der obersten Ebene 0 ein: Bleibt das Feld
leer, wird die Zeile abgelehnt („Column ‘fk_parent’ cannot be null“). Eine Unterkategorie kann ihre
übergeordnete Kategorie über deren Bezeichnung angeben, auch wenn diese weiter oben in derselben
Datei angelegt wird.
In 24.0.2 lassen sich die Verknüpfungen zwischen Kategorien und Einträgen dagegen nicht importieren. Wir haben Produkte, Kunden und Lieferanten getestet: Die Simulation zeigt „Das System hat einen technischen Fehler festgestellt“ und lehnt jede Zeile ab, auch mit korrekten Werten. Die Ursache liegt in der Prüfung, die der Assistent vornimmt (eine fehlerhafte Abfrage); der Code ist im Zweig 24.0 am 14.10.2026 unverändert.
Der getestete Ausweg: In der Produktliste die Produkte anhaken, die Aktion Schlagwort/Kategorie zuweisen wählen, die Kategorie auswählen und Freigeben klicken: „2 Datensätze geändert“. Die Liste der Geschäftspartner bietet dieselbe Aktion (hier nicht getestet).
Eine letzte Falle: Importprofile
In Schritt 3 lässt sich die Zuordnung als Importprofil speichern, um sie wiederzuverwenden. Das Speichern funktioniert, aber in 24.0.2 ändert die Auswahl des Profils mit Übernehmen nichts: Die Listen bleiben leer (das Formular sendet Schritt 3, der Code verarbeitet das Profil aber nur in Schritt 4). Kopfzeilen aus der Vorlagendatei erledigen dieselbe Arbeit, und sie funktionieren.
Zusammenfassung
- Beginnen Sie mit der Vorlagendatei und behalten Sie ihre Kopfzeilen: Die Zuordnung geschieht von selbst.
- Importieren Sie in dieser Reihenfolge: Geschäftspartner, Kontakte, Produkte, Warenlager, Lagerbestände, Lieferantenpreise, Kategorien.
- CSV in UTF-8, Datum als JJJJ-MM-TT, Zahlen mit Punkt, keine Formeln.
- Semikolon-Datei mit drei Spalten oder weniger:
;in Schritt 3 selbst eintragen. - Lesen Sie die Simulation: Ein einziger Fehler blockiert die ganze Datei.
- Zum Ändern von Einträgen einen eindeutigen Schlüssel und nur die zu ändernden Spalten: Eine leere Zelle löscht.
- Lagerbestand und Preise: Der Import legt weder Bewegungen noch Historie an; prüfen Sie den Bruttopreis.
- Kategorien: In 24.0.2 über die Massenaktion der Listen zuweisen, nicht per Import.
Läuft ein Import trotz allem nicht durch, ist genau das die Diagnose für 90 €: eine Stunde gemeinsam an Ihrer Instanz und Ihrer Datei, danach schriftlich, was blockiert und was die Behebung kosten würde.