I have an excel file – the data in which looks like.
[ ("a", 4, 4,2, 5,32), ("b", 6, 7,2, 7,32), ("c", 6, 7,2, None) ]
I want to get float values of cells – in which separator is comma. But when accessing them, a value with a dot is returned. Is it possible to do this with opepyxl or other libraries?
what i tried
ref_workbook = load_workbook('file.xlsx')
sheet_ranges = ref_workbook['Sheet']
sheet_ranges['C2'].value,# == 4.2, expected 4,2
I also tried pandas, but it also formats cells with commas.
Advertisement
Answer
This will set the locale to German, which uses a comma as the decimal separator and a dot as the thousands separator, and then format the float value using this locale.
You can also use ‘fr_FR’ for French, ‘pt_BR’ for Brazilian Portuguese and ‘es_ES’ for Spanish etc.
import pandas as pd
import locale
def modify_float_separator(row_num, col_num):
value = df.iloc[row_num, col_num]
# Check if the value is a float
if isinstance(value, float):
# Set the locale to German
locale.setlocale(locale.LC_ALL, 'de_DE')
# Format the float using the German locale
formatted_value = locale.format_string("%.2f", value, grouping=True)
return formatted_value
# Read the Excel file into a DataFrame
df = pd.read_excel('example.xlsx')
print(str(df.iloc[1,0])) # 5.32
print(modify_float_separator(1,0)) # 5,32