AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel - Wann ist "WAHR" ein Boolean?

Ein Thema von uligerhardt · begonnen am 23. Aug 2013 · letzter Beitrag vom 26. Aug 2013
Antwort Antwort
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#1

Excel - Wann ist "WAHR" ein Boolean?

  Alt 23. Aug 2013, 12:31
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.
2013_08_23_13_27_48_microsoft_excel_test_xlsx.png
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?
Angehängte Dateien
Dateityp: zip ReadExcelBoolTest.zip (11,1 KB, 2x aufgerufen)
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#2

AW: Excel - Wann ist "WAHR" ein Boolean?

  Alt 23. Aug 2013, 13:06
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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Excel - Wann ist "WAHR" ein Boolean?

  Alt 23. Aug 2013, 13:07
Such Dir was aus:
Delphi-Quellcode:
   (*
  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;
Das sind meine Versuche Excel zu Strings zu Überreden, Einfach mal das vorhandene Format auslesen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Excel - Wann ist "WAHR" ein Boolean?

  Alt 23. Aug 2013, 13:56
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
... und korrekt importiert.

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.
Mal sehen, ob man das den Tabellenerstellern beibringen kann.
Uli Gerhardt
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Excel - Wann ist "WAHR" ein Boolean?

  Alt 23. Aug 2013, 14:37
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").
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#6

AW: Excel - Wann ist "WAHR" ein Boolean?

  Alt 23. Aug 2013, 14:38
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.
Mal sehen, ob man das den Tabellenerstellern beibringen kann.
Meist stellt sich das Problem eher umgekehrt, da "Standard" die Standardeinstellung für Zellen ist. Ich habe z.B. viele Textfelder in meiner Datenbank, die meistens aber Zahlen (oft sogar mit führenden Nullen!) enthalten. Da gibts dann regelmäßig Probleme, wenn nicht zuerst explizit Textformat gewählt wurde. Die Frage ist also, wie bzw. von wem werden die Tabellen erstellt und warum wird dort explizit Textformat (für wahr/falsch) angegeben
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Excel - Wann ist "WAHR" ein Boolean?

  Alt 26. Aug 2013, 08:48
Das sind meine Versuche Excel zu Strings zu Überreden, Einfach mal das vorhandene Format auslesen?
Danke! Lesen und setzen von NumberFormat funktioniert soweit. Nur habe ich dann das Problem, das Olli73 beschrieben hat:
Zitat:
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.
Hat jemand eine Idee, wie man so eine "Neueingabe" automatisieren kann? Am liebsten aus dem Delphi-Programm heraus, aber notfalls auch manuell in Excel.
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 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