![]() |
Excel - Wann ist "WAHR" ein Boolean?
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo!
Wir bekommen xlsx-Dateien geliefert, die wir mit D2007 per OLE importieren wollen. Diese enthalten u.a. Spalten, die als Boolean interpretiert werden sollen, und in Excel als Werte WAHR bzw. FALSCH erscheinen. Leider kann ich die in Excel formatieren, wie ich will - sie kommen mit VarType varOleStr statt varBoolean. In test.xlsx im Anhang ist Zelle A2 aus so einer Datei kopiert. Zelle B2 hingegen stammt aus einer Datei, die ich selbst per OLE erzeugt habe. In den Spalten C-E stehen Kopien von A2, die ich auf unterschiedlichste Weise formatiert habe. Anhang 39800 Wenn man ReadExcelBoolTest.exe aus dem Anhang laufen lässt, sieht man aber, das außer B2 alle Zellen als OleStr interpretiert werden. Kann ich das Problem irgendwie in Excel oder in meinem Lesecode beheben? |
AW: Excel - Wann ist "WAHR" ein Boolean?
Teste mal folgendes in Excel:
- schreibe wahr (kleingeschrieben) in die 1. Zelle -> steht dann dort klein - Formatiere die Zelle auf Standard -> nix passiert - drücke <F2> und dann <Enter> (bearbeiten und bestätigen) -> WAHR wird groß, also nun korrekt erkannt Was ich dir damit sagen will: Eine Änderung der Zellformatierung in Excel wird erst wirklich wirksam bei einer "Neueingabe". Deshalb formatiere ich bei einer Ausgabe an Excel immer zuerst die Zellen und übergabe dann erst die Daten. |
AW: Excel - Wann ist "WAHR" ein Boolean?
Such Dir was aus:
Delphi-Quellcode:
Das sind meine Versuche Excel zu Strings zu Überreden, Einfach mal das vorhandene Format auslesen?
(*
if forcestring then for j := 0 to sg.colcount-1 do // excel.activesheet.cells(1,j+1).EntireColumn.NumberFormat:='@'; // excel.activesheet.EntireColumn.Cells(1,2).NumberFormat:= '@'; // excel.activesheet.cells(1,j+1).NumberFormat:='@'; *) if forcestring then begin excel.activesheet.Cells.NumberFormat := '@'; end; Gruß K-H |
AW: Excel - Wann ist "WAHR" ein Boolean?
Zitat:
Zitat:
|
AW: Excel - Wann ist "WAHR" ein Boolean?
Unabhängig vom Dateiformat (xls/xlsx) gibt es noch einen wichtigen Unterschied bei der OLE-Schnittstelle abhängig von der Excel-Version.
Bis Office2003 mussten bei der Zuweisung an Range[].Value Funktionsnamen in der Landessprache angegeben werden. Ab Office2007 werden generell nur noch englische Funktionsnamen akzeptiert. Falls die Datei auch mit OLE erstellt wird, gilt dies vermutliche auch für die Konstanten "TRUE" und "FALSE" (statt "WAHR" und "FALSCH"). |
AW: Excel - Wann ist "WAHR" ein Boolean?
Zitat:
|
AW: Excel - Wann ist "WAHR" ein Boolean?
Zitat:
![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz