Обработка вставки десятичной дроби с точкой (1.7), когда локаль ожидает запятую (1,7)

Обработка вставки десятичной дроби с точкой (1.7), когда локаль ожидает запятую (1,7)

У меня есть источник данных, где точка используется как десятичный разделитель, т.е. : 1.49означает "один и почти половина". Изменить это невозможно.

Это число необходимо скопировать и вставить в числовую ячейку в Excel или Calc. Файл является общедоступным и любой может его получить (получи это здесь) поэтому у меня нет контроля над ПК/программой пользователя.

Большинство пользователей — итальянцы с локалью it_IT, где десятичные знаки разделяются запятыми, например, : 1,49означает «один и почти полтора» (обратите внимание на запятую вместо точки).

Когда пользователь с итальянским языком пытается скопировать и вставить 1.49данные из источника данных в свою числовую ячейку, Calc/Excel сходит с ума, поскольку не распознает число как десятичное.

Если я устанавливаю язык на ячейку, все работает.... пока я не закрою программу. Если я снова открою документ, настройка теряется и он больше не работает

введите описание изображения здесь

Итак, мой вопрос:

  1. Можно ли принудительно установить локаль файла/листа на «en_US», независимо от локали, заданной пользователем?
  2. Можно ли закрепить атрибут «Язык»?
  3. Есть еще идеи? (пожалуйста, не «попросите пользователя изменить настройки»)

Я бы предпочел избегать макросов, если это возможно.

Спасибо!

Обновлять: У меня Windows 10 x64, и я только что обновился до LibreOffice 5.4.4 x64. Настройки языка для каждой ячейки все еще не сохраняются. Мне даже не ясно, если этопредполагаемыйсохранить или это просто настройка вида (предположу первое, так как кнопка сохранения загорается, когда я это делаю...)

решение1

Мои друзья из TurboLab.itпредложенныйлучшее решение на данный момент:

  1. установить ячейку, предназначенную для приема пользовательского ввода в виде «текста»
  2. во временной ячейке рядом замените точку с запятой на что-то вроде=SUBSTITUTE(E16;".";",")
  3. выполнить математические вычисления по замененному значению
  4. переконвертируйте его, если необходимо

Окончательный файл, для тех, кому интересно,доступно здесь.

Единственным существенным недостатком является то, что это работает только в том случае, если у пользователя установлена ​​локаль, в которой десятичным разделителем является «запятая», например, итальянская.

НТН.

решение2

Ручное решение, которое нужно повторять каждый раз при вставке:

После копирования и вставки вставленные ячейки будут выделены...
Сразу же используйте функцию «Найти и заменить», сначала замените все «.» (разделитель тысяч) на «» (т. е. «ничего»), затем замените «,» (исходный десятичный разделитель) на «.» (новый десятичный разделитель).

Возможно, вам придется использовать «Специальную вставку», чтобы добавить 0 или умножить на 1, чтобы интерпретировать их как числа.(==> поместите 1 или 0 в любую ячейку, скопируйте ее, затем нажмите «Специальная вставка» и выберите «сложить значение» или «умножить значение»).

Автоматизация: "Записать макрос", сделать то же самое, "остановить запись". Там же есть возможность назначить сочетание клавиш.

Связанный контент