Оформление выводимой информации

Автор Smaigas, 26 января 2022, 12:35

0 Пользователи и 1 гость просматривают эту тему.

Smaigas

Приветствую.
Подскажите пожалуйста, возможно ли "заякорить" формат вывода числовых ячеек в калке?
в ячейку вписывается значение угла в виде Г.ммссс например 12.25363 (12 градусов 25 минут 36.3 секунды).
Хочется видеть в таком варианте:  12.°25'36"3
Открываю формат ячейки прописываю: #."°"00"'"00""\"#
сохраняем как ods
Всё прекрасно, результат достигнут, но только до закрытия книги.
После открытия вновь, получаем: 12.25363°'"
А в формате #.0000#"°'"\"
Что интересно, если сохранять в xls, то формат сохраняется и выводит правильно
Думаю, файл нет смысла прикреплять, но если нужно прикреплю.
Спасибо

Version: 7.2.5.2 (x64) / LibreOffice Community
Build ID: 499f9727c189e6ef3471021d6132d4c694f357e5
CPU threads: 2; OS: Windows 10.0 Build 18363; UI render: Skia/Raster; VCL: win
Locale: en-US (lt_LT); UI: en-US
Calc: CL
Windows 10

kompilainenn

#1
А это похоже на багу, я проверил до 5.2 включительно - воспроизводится

https://bugs.documentfoundation.org/show_bug.cgi?id=96723 - баг репорт висит, н-да
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

mikekaganski

#2
Прежде всего отмечу, что 12.25363 - это не 12 градусов 25 минут 36.3 секунды, а 12 градусов и 0,25363 градуса - то есть 12 градусов 15 минут 13.1 секунд. Но вероятно, Вы просто хотите так вводить для удобства, и потом как-то обрабатывать число с вычленением сотых и тысячных... конечно, это приведёт к ошибкам округления, но Вы наверняка к этому готовы.

Как бы то ни было, Ваш числовой формат некорректен - внутри числа можно вставлять только десятичные разделители и разделители тысяч. Вставка любого другого знака недопустима - и это приводит к тому, что в формат ODF, где формат числа записывается в обработанном виде, пишется нечто другое.

Реальная проблема здесь - то, что данный формат обрабатывается нашим кодом, вместо выведения ошибки. Это всё очень связано с багом 67822, но вряд ли быстро и легко исправимо.

То, что оно сохраняется в Excel, вероятно, связано с особенностями хранения в этом формате, где записывается просто строка формата, а не обработанный результат.

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

=TRUNC(A1)&"°"&TRUNC(ABS(A1-TRUNC(A1))*100)&"'"&TEXT(ABS(A1*100-TRUNC(A1*100))*100;"00.0""")
=REGEX(TEXT(A1;"0.00000");"(.*),(..)(..)(.*)";"$1°$2'$3,$4""")
С уважением,
Михаил Каганский

sokol92

#3
Информация (Excel) о преобразовании углов в градусах - здесь.

Если уж "химичить", то лучше в вавилонской системе счисления.
Вводим как 12:25:36,3 и используем формат
[HH]"°"MM'SS,0"''"

По крайней мере, можно будет использовать для вычислений (с коэффицентом пересчета 2*PI()/15).  :)
Владимир.

Smaigas

Цитата: mikekaganski от 26 января 2022, 13:30Прежде всего отмечу, что 12.25363 - это не 12 градусов 25 минут 36.3 секунды, а 12 градусов и 0,25363 градуса - то есть 12 градусов 15 минут 13.1 секунд...
Ну, это Вы расскажИте производителям программного обеспечения для тахеометров(геодезичесских измерительных приборов). У них видение другое. И 12.25363 у них именно 12 градусов 25 минут 36.3 секунды.
Как Вы уже поняли эти все циферки не вбиваются ручками, а вставляются из файла данных автоматом.  Да, преобразовывать эти данные для дальнейших вычислений эти данные я умею. Просто хотелось "чтоб красиво". Низзя, так низзя

mikekaganski

#5
Цитата: Smaigas от 27 января 2022, 10:34производителям программного обеспечения для тахеометров

А, ну тогда понятно. Сочувствую Вам, как человек, автоматизировавший работу с таким софтом, а потом CREDO и т.п. (не знаю, что у Вас используется, но у нас всё это передавалось в CREDO).

Но в зависимости от того, как Вы получаете данные, возможно Вы можете решить задачу иначе. Если софт передаёт данные в CSV (а оно часто так и есть), то Вам можно просто настроить импорт столбцов фиксированной ширины, чтобы сразу делить на градусы/минуты/секунды по столбцам. Правда, оно будет работать только если в CSV 25 градусов показывается как 025.00000 (с ведущим нулём), или с ведущими пробелами.

И даже если нельзя изменить импорт, можно обработать уже импортированные данные с помощью форматирования столбца и функции "Текст по столбцам" (Text to Columns).

1. Отформатируйте столбец числовым форматом "+000.00000;-000.00000".
2. Если справа от столбца есть данные, вставьте два новых столбца справа от него.
3. Выделите столбец, вызовите диалог "Текст по столбцам", настройте в нём фиксированную ширину столбцов.
4. Отформатируйте данные, как нужно.
5. Поделите последний столбец (с секундами) на 10.
С уважением,
Михаил Каганский