Seite 1 von 1

xlrd + excel dezimal-trennzeichen ermitteln

Verfasst: Donnerstag 17. September 2009, 11:32
von boriq
Hallo Experten,

ich möchte mit hilfe von xlrd das Dezimal-Trennzeichen von Excel ermitteln. Hab's selbst probiert aber nicht geschaft. Hat vielleicht jemand von euch einen Tipp?

Danke.
Peter

Verfasst: Donnerstag 17. September 2009, 12:56
von gkuhl
Hallo und willkommen in Forum,

willst du wissen welches Zeichen als Dezimal-Trennzeichen für die Darstellung in MS-Excel Programm eingestellt ist? Oder geht es dir darum rauszufinden, welches Trennzeichen in einer Excel-Datei (*.xls) verwendet wird?

Vielleicht kannst du noch etwas genauer schildern, was du vorhast.

Grüße
Gerrit

Verfasst: Donnerstag 17. September 2009, 13:16
von boriq
hallo und danke für die antwort.

ist das eigentlich nicht egal ob in MS-Excel Programm oder in einer Excel-Datei? Wenn ich in Excel das Dezimal-Trennzeichen einstelle, werden automatisch alle Excel-Dateien auf dieses Zeichen umformatiert, so ist es bei mir.

Zu meiner Arbeit.
Ich lese Daten aus der xls-Datei mit Hilfe von xlrd. Das klappt wunderbar, nur dem Python ist das egal was für Trennzeichen in Excel eingestellt ist, er liest die Zahlen immer mit Punkt als Trennzeichen. Dann verarbeite ich die Daten und schreibe in eine txt-Datei raus. Und ich möchte, dass das Trennzeichen in dieser txt-Datei das gleiche ist, wie in Excel.

Verfasst: Donnerstag 17. September 2009, 13:34
von gkuhl
Die Umformatierung der Trennzeichen findet aber nur in der Darstellung im Excel GUI statt. Intern werden die Daten wohl immer gleich gespeichert. Eventuell steht irgendwo in der xls-File unter welchen lokalen Einstellungen die Datei gespeichert wurde. Das Auszulesen dieser Daten wird von xlrd allerdings leider noch nicht unterstützt. In der Dokumentation von xlrd steht dazu:
Modern Excel file versions don't keep most of the built-in "number formats" in the file; Excel loads formats according to the user's locale. Currently xlrd's emulation of this is limited to a hard-wired table that applies to the US English locale. This may mean that currency symbols, [...] decimals separator, etc are inappropriate. Note that this does not affect users who are copying XLS files, only those who are visually rendering cells.
Ich würde dir empfehlen als Trennzeichen immer den Punkt (.) zu verwenden. Damit vermeidet man auch Konflikte, wenn z.B. das Komma (,) als Trennzeichen für Datensätze verwendet werden soll.

Grüße
Gerrit

Verfasst: Donnerstag 17. September 2009, 14:13
von boriq
ok, danke für die Infos.

Problem ist, dass wenn ein Anwender sein Excel-Datei öffnet und mein Makro anwendet, muss das Makro wissen was für Trenzeichen hat er in seinem Excel und die Zahlen mit richtigem Trennzeichen speichern.

Aber wenn es noch nicht von xlrd unterstützt wird, dann kann ich nichts machen

danke nochmals

Verfasst: Donnerstag 17. September 2009, 14:49
von BlackJack
@boriq: Wieso musst Du wissen was der Anwender für ein Trennzeichen eingestellt hat? Die Zahlen werden in der Datei immer im selben Format gespeichert, das ist unabhängig davon als welches Zeichen der Dezimaltrenner am Ende angezeigt wird.

Verfasst: Freitag 18. September 2009, 13:44
von boriq
@BlackJack: Die Text-Datei die ich am Ende erstelle, wird automatisch geöffnet und der Anwender kopiert die Werte in Excel zurück. (Ja ich weiss, geht auch anders, aber wir haben eine uralte Python version und das kann ich nicht ändern) D.h. wenn Anwender in Excel Komma als Dezimal-Trennzeichen hat und in der Text-Datei werden Werte mit Punkt als DT gespeichert und er kopiert diese Werte zurück in Excel, werden die Werte nicht als Zahl erkannt aber als Text. Wenn der Anwender Punkt als DT in Excel hat, ist es kein Problem.

Deswegen brauche ich wissen, was für ein Trennzeichen der Anwender in Excel har um ihm die Txt-Datei mit richtigem DT vorzubereiten.

Verfasst: Freitag 18. September 2009, 17:53
von BlackJack
Dann musst Du den Anwender halt fragen. Wenn das nicht in der Exceldatei steht, dann kannst Du das auf dem Weg auch nicht herausfinden.

Verfasst: Freitag 18. September 2009, 19:23
von gkuhl
Vieleicht ist eine csv-Datei als Ausgabe eine Möglichkeit. Der Benutzer kann dann diese Datei einfach mit Excel importieren. Hängt natürlich vom genauen Problem ab.

Verfasst: Montag 21. September 2009, 07:44
von boriq
Danke für die Antworten

Ich denke der Anwender muss das schon selbst in Hände nehmen....