Hello,
> I exchange ODS and XLS files between the French Canadian (decimal
> separator « , ») and English US/Canada locales (decimal separator « .
> ») without issues. When the number is already in a cell on a worksheet,
> the application will use the locale to display a decimal number in the
> correct way.
> However, you cannot transfer files in text format (such as CSV)
> directly from one to the other because the formatting of the decimal
> numbers will conform to the current locale when the file is created: if
> I import a CSV file created from the "English" version, afer the import
> I must do a global replace of « . » to « , » to make numbers become
> numbers again. Also, when going the other way, the CSV separator is
> usually a « ; » to allow decimal numbers to contain a comma as decimal
> separator, which is something Excel does not always handle very well.
Ok maybe I mixed CSV with excel files and that is where my confusion
starts. You are right the xlsx format seems pretty save.
> So far, the best way I found is to save as XLS (or XLSX) from LO (Excel
> considers ODS files as "broken" and does not preserve formulas), do the
> changes in Excel, then open the XLS file in LO and save in ODS. Just
> remember here that some page and cell formatting may be lost in the
> exchange, so do not attempt anything fancy on that front :-).
Still the excel files, when opened in excel contain cells with small
green edges, which according to the documentation is a indication of
possible format violation.
> If you use formulas that format numbers (=TEXT()), you will need to
> have some intelligence to use the proper separator when encoding the
> number format (more so for Excel than for LO). What I usually do is
> have a cell that I name SEP that contains a formula like this:
> =IF(ISNUM("3.4");".";",")
> Then when I need to format a value with the =TEXT() function, I use it
> this way to have a number with one decimal digit:
> =TEXT(value;"0"&SEP&"0") or, if you prefer,
> =TEXT(value;CONCATENATE("0";SEP;"0"))
> In English locales, this translates to: =TEXT(value;"0.0"); in the non-
> English locale, it becomes =TEXT(value;"0,0")
> I hope this helps.
Thanks it does, will try to avoid to use the TEXT function, though.
Uwe Brauer