[Gelöst] Datumsformat ExcelBuffer

20. Januar 2011 12:03

Hallo erstmal :) Mit Begeisterung habe ich mich bisher durchs Forum gewühlt und für so manche Aufgabe bereits eine Lösung gefunden, jetzt ist es aber so weit das ich ein kleines Problem habe zu dem ich nichts finde.

Und zwar baue ich gerade einen Report so um das er optional einen ExcelExport über den Excelbuffer unterstützt, beim Ausgeben von Datums-Daten habe ich allerdings ein kleines Problem.

Meine Codezeile sieht so aus:

Code:
EnterCell(3,2, FORMAT(VonDatum,0,'<Day,2>.<Month,2>.<Year4,4>'),TRUE,FALSE,FALSE);

// FunktionsHeader:

EnterCell(RowNo : Integer;ColumnNo : Integer;CellValue : Text[250];Bold : Boolean;Italic : Boolean;Underline : Boolean) : Text[250]



Wobei Entercell die Funktion ist die mir die Daten in die dementsprechende Zelle schreibt. Was hier allerdings nicht funktioniert ist das Formatieren des Datums, den Excel wandelt es automatisch wieder in eine Zahl um, gibt es hier eine einfache Abhilfe?

Abgeschaut hab ich mir den ExcelBuffer hier: http://www.navision24.de/tutorials/echt ... eugen.html

Vielen Dank im voraus und noch ein dickes Lob an das tolle Forum!
Zuletzt geändert von gente am 20. Januar 2011 14:19, insgesamt 2-mal geändert.

Re: Datumsformat ExcelBuffer

20. Januar 2011 12:11

Du könntest die Funktion so erweitern, dass du das CellFormat mitgeben kannst. Dafür findest du hier in etwa das, was du brauchst.

Re: Datumsformat ExcelBuffer

20. Januar 2011 12:41

Also wenn du schon die Table 370 für deine Exportfunktion verwendest, dann könntest du auch die Funktionen der Table 370 nutzen.

Es gibt dort die Funktion "AddColumn", der du als letzten Parameter das Format der zu erstellenden Zelle mitgeben kannst.
'@' = formatiere die Zelle als Text, auch wenn Excel im Standard als Zahl formatieren würde (ist z.B. bei Postleitzahlen mit führender Null sinnvoll)
'TT.MM.JJ' = Datumsformat

Code:
ExcelBuf.NewRow;
ExcelBuf.AddColumn(SalesShipmentHeader."Sell-to Customer No.",FALSE,'',FALSE,FALSE,FALSE,'@');
ExcelBuf.AddColumn(SalesShipmentHeader."Ship-to Name",FALSE,'',FALSE,FALSE,FALSE,'@');
ExcelBuf.AddColumn(SalesShipmentHeader."Order No.",FALSE,'',FALSE,FALSE,FALSE,'@');
ExcelBuf.AddColumn(SalesShipmentLine."No.",FALSE,'',FALSE,FALSE,FALSE,'@');
ExcelBuf.AddColumn(SalesShipmentLine."Shipment Date",FALSE,'',FALSE,FALSE,FALSE,'TT.MM.JJ');
ExcelBuf.AddColumn(SalesShipmentLine."Unit of Measure",FALSE,'',FALSE,FALSE,FALSE,'');


Gruß
Jörg

Re: [Gelöst] Datumsformat ExcelBuffer

20. Januar 2011 13:23

Danke für den Tipp mit dem Numberformat, habs jetzt folgendermaßen gelöst:

Ich habe mir die Funktion EnterCell um einen Integer Wert erweitert, mit dem ich das dementsprechende Format auswählen kann:

Sieht so aus:

Code:
CASE Format OF
  1: TempExcelBuffer.NumberFormat :='TT.MM.JJ';
  2: TempExcelBuffer.NumberFormat :='0,00';
  ELSE TempExcelBuffer.NumberFormat :='0';
END;


Vielen Dank!