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.
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?
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?
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
.
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.
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 ,