[Gelöst]Excel-Import mit ExcelBuffer

6. März 2020 12:46

Hallo zusammen,

Ich versuche einen Import einer Excel-Datei mit folgenden Werten zu erstellen: EAN und Text
Diese sollen in die Tabellen ExtendedTextHeader und ExtendedTextLine integriert werden.
Ich bekomme bei meinem Code zwar keinen Fehler jedoch öffnet sich einfach nur die Excel-Tabelle
und die Datensätze werden leider nicht in die Tabellen übertragen. Vielleicht sieht ja jemand
auf die Schnelle was ich noch verändern könnte.

Code:
ExcelBuffer.DELETEALL;

ExcelFile := FileMgt.OpenFileDialog(Text01,'',ExcelFileExtensionFilter);
IF ExcelFile = '' THEN
  EXIT;

ServerFileName := FileMgt.UploadFileSilent(ExcelFile);
IF ServerFileName = '' THEN
  EXIT;

ExcelSheet := ExcelBuffer.SelectSheetsName(ServerFileName);
IF ExcelSheet = '' THEN
  EXIT;

ExcelBuffer.LOCKTABLE;
ExcelBuffer.OpenBook(ServerFileName, ExcelSheet);
ExcelBuffer.ReadSheet;

IF ExcelBuffer.FINDFIRST THEN BEGIN
  CountRows := ExcelBuffer."Row No.";
  CountColumns := ExcelBuffer."Column No.";
END;
FOR I := 2 TO CountRows DO BEGIN
  ExtLine.INIT;
  "Extended Text Header".INIT;
 
  IF ExcelBuffer.GET(I,1) THEN BEGIN
    NewEAN := ExcelBuffer."Cell Value as Text"; 
    Item.SETRANGE("EAN Code", NewEAN);
    Item.FINDFIRST;
    ExtLine."No." := Item."No.";
    "Extended Text Header"."No." := Item."No.";
    ExtLine."Table Name" := ExtLine."Table Name"::Item;
    "Extended Text Header"."Table Name" := "Extended Text Header"."Table Name"::Item;
    ExtLine."Language Code" := '';
    "Extended Text Header"."Language Code" := '';
    ExtLine."Text No." := 1;
    "Extended Text Header"."Text No." := 1;
    ExtLine."Line No." := 10000;
    ExtLine.Shop := TRUE;
    "Extended Text Header".Shop := TRUE;
    ExtLine.INSERT;
    "Extended Text Header".INSERT;
  END;
  FOR C := 2 TO CountColumns DO BEGIN
    IF ExcelBuffer.GET(I,C) THEN BEGIN
      ExtLine.Text := ExcelBuffer."Cell Value as Text";
      ExtLine.MODIFY;
      "Extended Text Header".MODIFY;
      ExtLine."Line No." += 10000;
      ExtLine."Text No." += 1;
    END;
  END;
END;


Vielen Dank im Voraus,

Razvan
Zuletzt geändert von RazvanNAV am 9. März 2020 10:42, insgesamt 1-mal geändert.

Re: Excel-Import mit ExcelBuffer

6. März 2020 13:36

ich denke du behandelst deinen ExcelBuffer falsch

-> du machst ein ReadSheet und dann ein Findfirst (ohne Repeat).
du musst doch den Excelbuffer durchlaufen

-> schau mal hier https://andreilungu.com/excel-buffer-nav/

Re: Excel-Import mit ExcelBuffer

6. März 2020 13:48

Ein Import mit Boardmitteln wie z.B. einem RapidStart-Paket hilft dir nicht weiter?

Re: Excel-Import mit ExcelBuffer

9. März 2020 10:41

Hi,

es war ein wichtiger Hinweis mit dem REPEAT,
mit folgendem Code habe ich es gelöst:

Code:
ExcelBuffer.DELETEALL;

ExcelFile := FileMgt.OpenFileDialog(Text01,'',ExcelFileExtensionFilter);
IF ExcelFile = '' THEN
  EXIT;

ServerFileName := FileMgt.UploadFileSilent(ExcelFile);
IF ServerFileName = '' THEN
  EXIT;

ExcelSheet := ExcelBuffer.SelectSheetsName(ServerFileName);
IF ExcelSheet = '' THEN
  EXIT;

ExcelBuffer.LOCKTABLE;
ExcelBuffer.OpenBook(ServerFileName, ExcelSheet);
ExcelBuffer.ReadSheet;
IF ExcelBuffer.FINDFIRST THEN REPEAT
  CountRows := ExcelBuffer."Row No.";
  IF ExcelBuffer."Column No." > CountColumns THEN
  CountColumns := ExcelBuffer."Column No.";
UNTIL ExcelBuffer.NEXT = 0;
FOR I := 2 TO CountRows DO BEGIN
  "Extended Text Header".INIT;
  IF ExcelBuffer.GET(I,1) THEN BEGIN
    NewEAN := ExcelBuffer."Cell Value as Text";
    Item.SETRANGE("EAN Code", NewEAN);
    Item.FINDFIRST;
    "Extended Text Header"."No." := Item."No.";
    "Extended Text Header"."Table Name" := "Extended Text Header"."Table Name"::Item;
    "Extended Text Header"."Language Code" := '';
    "Extended Text Header"."Text No." := 1;
    "Extended Text Header".Shop := TRUE;
    "Extended Text Header".INSERT;
    ExtLine."Line No." := 0;
  END;
  FOR C := 2 TO CountColumns DO BEGIN
    IF ExcelBuffer.GET(I,C) THEN BEGIN
      ExtLine."No." := Item."No.";
      ExtLine."Table Name" := ExtLine."Table Name"::Item;
      ExtLine."Language Code" := '';
      ExtLine."Text No." := 1;
      ExtLine.Shop := TRUE;
      ExtLine.Text := ExcelBuffer."Cell Value as Text";
      ExtLine."Line No." += 10000;
      ExtLine.INSERT;
    END;
  END;
END;