> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.go-lizard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CSV-Import

> Items aus einer CSV-Liste mit individuellen Werten pro Zeile erzeugen und an Lizard übertragen.

Mit dem **CSV-Import** erzeugst du Betriebsmittel aus einer fertigen Liste — etwa aus Excel, einem Wareneingang oder einem Fremdsystem. Jede CSV-Zeile wird zu einer Position, und du ordnest die Spalten den Katalog-Feldern zu.

## Wann CSV-Import nutzen?

* Du hast bereits eine Liste mit **individuellen Seriennummern, Dyntags oder Attributwerten**
* Die Werte folgen **keinem einfachen Inkrement-Schema** (siehe [Batch-Import](/expressimport/batch-import) für Inkrement-basierte Kopien)
* Du möchtest Daten aus Excel, Google Sheets oder einem ERP direkt übernehmen

<Tip>
  Für identische Positionen mit fortlaufenden Nummern ist der normale Kopien-Generator schneller. CSV lohnt sich, sobald jede Zeile andere Werte hat.
</Tip>

## Voraussetzungen

* Ein Katalog mit passender Kategorie (siehe [Katalog erstellen](/expressimport/katalog-erstellen))
* Eine CSV-Datei **mit Header-Zeile** (Spaltennamen in der ersten Zeile)
* Einheitliche Spaltenanzahl in allen Zeilen

## Unterstütztes Format

ExpressImport erkennt das Trennzeichen automatisch. Unterstützt werden:

| Trennzeichen    | Typische Quelle                    |
| --------------- | ---------------------------------- |
| Tab (`\t`)      | Kopieren aus Excel / Google Sheets |
| Semikolon (`;`) | Deutsche Excel-Exports             |
| Komma (`,`)     | Englische Exports, klassisches CSV |

**Weitere Regeln:**

* Die **erste Zeile muss der Header** sein (Spaltennamen)
* Werte mit Trennzeichen oder Zeilenumbrüchen in doppelte Anführungszeichen setzen: `"Mein; Wert"`
* Doppelte Anführungszeichen innerhalb eines gequoteten Feldes werden verdoppelt: `"Er sagte ""Hallo"""`
* Leere Zeilen werden ignoriert
* Alle Datenzeilen müssen die **gleiche Spaltenanzahl** wie der Header haben

## CSV-Import einrichten

<Steps>
  <Step title="Katalog öffnen">
    Öffne den gewünschten Katalog im Bearbeitungsmodus. Scrolle zum Abschnitt **CSV-Import**.
  </Step>

  <Step title="CSV-Import aktivieren">
    Setze den Schalter **CSV-Import (Items aus Liste mit individuellen Werten)** auf aktiv.
  </Step>

  <Step title="CSV-Daten einfügen">
    Füge deine CSV-Daten in das Textfeld ein. ExpressImport parst den Inhalt sofort und zeigt dir:

    * Anzahl erkannter Datenzeilen
    * Anzahl erkannter Spalten
    * Erkanntes Trennzeichen

    <Check>
      Bei erfolgreichem Parsen erscheint die Mapping-Sektion mit allen Header-Namen.
    </Check>
  </Step>

  <Step title="Spalten zuordnen">
    Ordne jede CSV-Spalte einem Katalog-Feld zu:

    * **Betriebsmittelnummer** — die eindeutige Nummer je Position
    * **Dyntag** — optional, akzeptiert auch vollständige `https://dynt.ag/...` URLs
    * **Attribute** — jedes Katalog-Attribut kann aus einer CSV-Spalte befüllt werden

    ExpressImport schlägt ein Mapping automatisch vor, wenn Spaltennamen zu Feldnamen passen (case-insensitive, Leerzeichen und Bindestriche werden ignoriert).
  </Step>

  <Step title="Vorschau prüfen">
    Unter der Mapping-Sektion siehst du eine Vorschau der ersten fünf Zeilen. Zugeordnete Spalten werden hervorgehoben.
  </Step>

  <Step title="Katalog speichern">
    Klicke auf **Speichern**. Das CSV-Mapping wird zusammen mit dem Katalog gespeichert.
  </Step>
</Steps>

## Items aus CSV erzeugen

Sobald CSV-Import aktiv ist und Datenzeilen vorhanden sind, ändert sich der Item-Generator:

<Steps>
  <Step title="Generator öffnen">
    Öffne den Katalog im Generator-Modus. Statt **Kopien erstellen** erscheint der Button **Items aus CSV erzeugen**, zusammen mit der Anzahl der CSV-Zeilen.
  </Step>

  <Step title="Zuordnung prüfen">
    Klicke auf den Button. Ein Bestätigungs-Dialog zeigt die ersten zehn Items mit den aus der CSV gezogenen Werten.
  </Step>

  <Step title="Erzeugen bestätigen">
    Bestätige, um alle Items anzulegen. Für jede CSV-Zeile wird ein Item erzeugt — mit den gemappten Werten und den Katalog-Defaults für nicht zugeordnete Felder.

    <Check>
      Die Items erscheinen in der Liste und können vor dem Versand noch einzeln geprüft werden.
    </Check>
  </Step>
</Steps>

<Note>
  Im CSV-Modus ist die **Betriebsmittelnummer kein Pflichtfeld im Katalog**, wenn sie aus einer CSV-Spalte gemappt wird. Jede Zeile bringt ihre eigene Nummer mit.
</Note>

## Dyntag-Besonderheit

Beim Dyntag-Mapping erkennt ExpressImport automatisch URL-Präfixe und entfernt sie:

| CSV-Wert                 | Übernommener Dyntag |
| ------------------------ | ------------------- |
| `ABC123`                 | `ABC123`            |
| `https://dynt.ag/ABC123` | `ABC123`            |
| `dynt.ag/XY-42`          | `XY-42`             |

So kannst du QR-Code-URLs direkt aus einem Scanner-Export übernehmen, ohne vorher zu bereinigen.

## Fehler beim Parsen

<Accordion title="Keine Daten eingefügt">
  Das Textfeld ist leer oder enthält nur Leerzeichen. Füge die CSV-Daten erneut ein.
</Accordion>

<Accordion title="Header-Zeile fehlt oder ist leer">
  Die erste Zeile muss die Spaltennamen enthalten. Stelle sicher, dass dein Export mit Headern generiert wurde — in Excel ist das die Standardeinstellung beim Speichern als CSV.
</Accordion>

<Accordion title="Header gefunden, aber keine Datenzeilen">
  Die CSV enthält nur den Header. Füge mindestens eine Datenzeile hinzu.
</Accordion>

<Accordion title="Zeile X hat Y Spalten, erwartet Z">
  Eine Datenzeile hat eine andere Spaltenanzahl als der Header. Häufige Ursachen:

  * Ein Wert enthält ein Trennzeichen und ist nicht gequotet — setze den Wert in `"..."`
  * Eine leere Spalte wurde ausgelassen — füge ein leeres Feld ein (zwei Trennzeichen hintereinander)
  * Der Export enthält eine abschliessende Kommentarzeile — entferne sie
</Accordion>

<Warning>
  ExpressImport bricht beim ersten inkonsistenten Datensatz ab. Korrigiere die angezeigte Zeile und füge die CSV erneut ein.
</Warning>

## Empfohlener Workflow

<Steps>
  <Step title="CSV in Excel vorbereiten">
    Baue die Liste in Excel mit sprechenden Spaltennamen auf, die zu deinen Katalog-Feldern passen (z. B. `Seriennummer`, `Dyntag`, `Standort`).
  </Step>

  <Step title="Kopieren statt exportieren">
    Markiere den Datenbereich inklusive Header und kopiere ihn. Beim Einfügen in ExpressImport wird automatisch Tab als Trennzeichen erkannt — du sparst dir den CSV-Export.
  </Step>

  <Step title="Mapping prüfen und speichern">
    Kontrolliere das automatische Mapping, passe es bei Bedarf an und speichere den Katalog.
  </Step>

  <Step title="Items erzeugen und senden">
    Erzeuge die Items und sende sie wie im [Batch-Import](/expressimport/batch-import) beschrieben an Lizard.
  </Step>
</Steps>

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Batch-Import" href="/expressimport/batch-import">
    Versand der erzeugten Items inklusive Fehlerbehandlung und Rate-Limit.
  </Card>

  <Card title="Katalog erstellen" href="/expressimport/katalog-erstellen">
    Attribute und Standardwerte für dein CSV-Mapping definieren.
  </Card>
</CardGroup>
