AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Nachdem das Ganze jetzt mit dem Neuschreiben der Zahlen funktioniert wollte ich noch die letzte Spalte als Datum formatieren.
Ich habe ein Datum-Format mit Schrägstrichen, also sowas wie 24/12/2020 . In Excel werden in der betreffenden Spalte teilweise Zellen als Text, teilweise Datum erkannt.
Code:
Funktioniert leider nicht. Excel formatiert nach wie vor wie es möchte, bzw ein Datum erkannt wird.
ExcelApp.Range['A1','A1'].EntireColumn.NumberFormat:= 'dd/mm/yyyy';
LG Mirko |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Hallo Mirko,
für die deutsche Excel-Version mußt Du folgendes schreiben:
Delphi-Quellcode:
Gruß, Andreas
Excel.Range['A1','A10'].EntireColumn.NumberFormat:= 'TT/MMMM/JJJJ'; oder
Excel.Range['A1','A10'].EntireColumn.NumberFormat:= 'TT/MM/JJJJ'; |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Hallo,
wenn man das TMS – StringGrid (das SG von Delphi funktioniert genauso) in Excel übertragen will, benutze ich folgende Routine, das ist ein Extrakt sollte aber funktionieren:
Delphi-Quellcode:
procedure HPL_TMS_SG_nach_Excel;
var i, j:integer; Text: String; Zahl : Extended; Datum: TDateTime; olevEXCEL: OLEVariant; begin try olevExcel := CreateOleObject('Excel.Application'); except ShowMessage('Microsoft Excel kann nicht starten.'); exit; end; olevExcel.Visible := true; olevExcel.Workbooks.add; for i:=0 to AdvStringGrid1.rowcount-1 do begin for j:=0 to AdvStringGrid1.colcount-1 do begin Text:=AdvStringGrid1.cells[j,i]; if TryStrToFloat(Text, Zahl) then begin olevEXCEL.cells[i+1,j+1].Value2:= Zahl; end else begin if TryStrToDate(Text,Datum) then begin olevEXCEL.cells[i+1,j+1].Value2 := Datum; end else begin olevEXCEL.cells[i+1,j+1].Value2 := Text; end; end; end; end; // Beispiel einer Formatierung // Spalte 3 sind Zahlen und werden mit 2 Kommastellen und Euro Zeichen formatiert // Anschließend werden die Zellen rot markiert bis auf die Überschrift. olevEXCEL.Range['C1','C10'].NumberFormat :='_(€* #.##0,00_);_(€* (#.##0,00);_(€* ""-""??_);_(@_)'; olevEXCEL.Range['C2','C10'].Interior.Color:= CLRED; Showmessage ('Stop!'); // Hier aus EXCEL die Datei abspeichern. // ist nicht im Code enthalten if NOT VarIsEmpty(olevEXCEL) then begin olevEXCEL.ActiveWorkBook.Saved:= TRUE; olevEXCEL.Quit; olevEXCEL:= Unassigned; end; end; Bis bald Chemiker |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Danke für den Code Chemiker ich hatte bis jetzt immer nur die Standardfunktion
Code:
verwendet.
GRID.SaveFiletoXLS(Dateiname:String)
Andreas, gibt es da nichts, das Sprachunabhängig ist? Was macht man wenn man verschiedene Sprachversionen Excel hat? Deutsch und Englisch z.B.? LG Mirko |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
@oakley: Du könntest das ja nach der Systemsprache entscheiden (https://www.delphipraxis.net/175056-...-auslesen.html), da man in der Regel ja die Programme in der gleichen Sprache installiert wie auch die Systemsprache ist.
Ansonsten hilft dir das evtl weiter: https://docs.microsoft.com/de-de/off...nguagesettings bzw. https://renenyffenegger.ch/notes/Win...esources/index und dort dann der Key "InstallLanguage", wobei 1031 DE_de ist: https://www.science.co.il/language/Locale-codes.php |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Okay also ich habe es jetzt so gemacht, dass ich LCID abfrage.
Code:
Wenn syslang = 1031 habe ich als Systemsprache Deutsch.
LCID := Languages.indexOf(SysLocale.DefaultLCID);
syslang := Languages.LocaleID[LCID]; Ich gehe dabei einfach mal davon aus, dass die installierte Excel Sprache gleich der Systemsprache ist. Danke für Eure Hilfe und die zahlreichen Erklärungen. LG Mirko |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Man kann doch das NumberFormat einfach mit dem amerikanischen/internationalen/allgemeingültigen Format-String setzen. Nur wenn ich stattdessen NumberFormatLocal benutze muss ich aufpassen, oder?
|
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Also das nachträgliche Schreiben der Formate funktioniert.
Das Workbook wird auch nicht angezeigt weil Excelapp.Visible := false gesetzt ist. Sobald Excel das erste mal gestartet ist wird eine zweite Excel Instanz erzeugt und die ist dann direkt sichtbar. Wir kann ich unterdrücken, dass bei geöffnetem Excel das Workbook direkt angezeigt wird?
Code:
LG
ExcelApp := CreateOleObject('Excel.Application');
Excelapp.Visible := false; <- Wird bei laufendem Excel ignoriert Workbook := ExcelApp.WorkBooks.Open(excelfilename); <- hier wird die Datei dann im sichtbaren Excel geöffnet, was aber falsch ist ExcelApp.Range['A1','J1'].EntireColumn.AutoFit; ExcelApp.Range['A1','J1'].Font.Bold := True; ExcelApp.Range['A1','J1'].HorizontalAlignment := -4108; //xlHAlignCeenter ExcelApp.Range['A1','J1'].Interior.Color := RGB(150,150,150); ... Excelapp.Visible := True; Mirko |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Hallo,
so müsste es funktionieren.
Delphi-Quellcode:
var excel_obj: olevariant; i: Integer; begin excel_obj := unassigned; excel_obj := GetActiveOleObject('Excel.application'); for i := 1 to excel_obj.windows.count do excel_obj.Windows[i].visible := false; excel_obj := unassigned; end; Gruß |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Danke mmw,
das funktioniert. LG Mirko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz