openpyxl niechiana podmiana "," na "."

0

Czytam plik *.xlsx a w kolumnach cą cyfry całkowite ale tez zmiennoprzecinkowe. Niestety podczas pobierania zamienia , na .
Da się ten proceder ukrócić? Mi się nie udało znaleźć w google. Może być nawet jako string.

0

Pobrana wartość będzie miała . zamiast , bo będzie to pythonowy float. W Excelu (czy czego tam używasz) ten format będzie zlokalizowany, bo w Polsce pisze się 3,1415, a w USA 3.1415. Pod spodem (w XMLu) ta wartość pewnie i tak jest zapisana z .. O to chodzi?

Co do czytania surowych wartości - próbowałeś https://stackoverflow.com/questions/22613272/how-to-access-the-real-value-of-a-cell-using-the-openpyxl-module-for-python?

0

Nie udało mi się osiągnąć sukcesu :(

Jak potrzebowałem w python używać cyfr z . to importował z pliku *.csv z przecinkami, teraz potrzebuję użyć openpyxl to wole aby pobierał tak jak jest w pliku, czyli z , Może to być kwestia że csv operuje stringami a openpyxl stara się rozpoznawać cyfry. Da się może wymusić czytanie stringów w openpyxl?

0

No ale przecież nawet jak się dokopiesz do surowych wartości, to one będą z kropką, bo tak wygląda wewnętrzna reprezentacja liczb w .xlsx. Zmień sobie rozszerzenie arkusza na .zip, rozpakuj i znajdź XMLa który opisuje twoją tabelę to zobaczysz. To, że w excelu widzisz 3,1415 nie zmienia faktu, że w środku jest to zapisane jako 3.1415. To tylko lokalizacja. Jak zmienisz region/formatowanie na USA, to w tej samej komórce zobaczysz 3.1415.

0

Dziękuję wszystkim za zaangażowanie w mój problem. Rozwiązałem problem następująco:
str(round(row[8], 2)).replace('.', ',') if type(row[8]) is float else row[8]
Chyba najprostsze rozwiązanie jak na amatora.

0

Brzmi jak problem z ustawieniami locale/języka dla danego workbooka i generalnie sprawdziłbym jak to ustawić a nie robił cyrki z zamianą . na ,

1 użytkowników online, w tym zalogowanych: 0, gości: 1