Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

17 Май 2022, 04:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Интересные задачи  (Прочитано 3890 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sokol92
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 900


WWW
« Ответ #60742: 26 Декабрь 2021, 17:25 »

Итак, попробуем сформулировать некоторые обобщения для следующих случаев присвоения свойств Formula и FormulaLocal ячейке в Calc и Excel.
Ячейка имеет "общий" формат, локализация Calc и Excel для определенности ru_RU, в Calc используется язык интерфейса по умолчанию и не используются английские имена функций.

Все выводы являются гипотезами, поскольку не основаны на анализе исходных текстов программ.

1. Правила интерпретации текстов при присвоении свойства FormulaLocal те же, что используются при интерпретации текста, который пользователь вводит интерактивно в ячейку.

2. При интерпретации текстов, которые присваиваются свойству Formula ячейки, используются правила для локализации en_US (некоторые уточнения см. ниже).

3. Интерпретация текстов, которые начинаются на знак апострофа.

В Excel в обоих случаях в ячейку заносится текст с удаленным первым символом. Свойство ячейки Range.PrefixCharacter устанавливается в знак апострофа (благодаря этому свойству, в строке формул ячейка отображается с ведущим апострофом).

В Calc при присвоении свойства Formula ячейка после присвоения содержит текст с удаленным первым символом. Если занесенное значение может быть интерпретировано как число, дата, логическое значение в соответствии с локализацией по умолчанию (в нашем случае ru_RU), то формат ячейки меняется на текстовый.

В Calc при присвоении свойства FormulaLocal производится анализ, может ли значение с удаленным первым сиволом быть интерпретировано как число, дата, логическое значение в соответствии с локализацией по умолчанию. Если может, то в ячейку заносится текст с удаленным первым символом. Если нет, то заносится исходный текст без преобразования. В обоих случаях формат ячейки не изменяется.

4. Интерпретация текстов, которые начинаются на знак равенства (=).

Исходный текст интерпретируется как формула (локализованная в случае FormulaLocal и не локализованная для Formula).
Если формула содержит синтаксическую ошибку то в Excel возникает исключительная (аварийная) ситуация.
В Calc в случае синтаксической ошибки  в ячейку будет занесено "специальное" (?) значение.

5. Интерпретация текстов, содержащих логические значения.
Речь идет о значениях "TRUE", "FALSE", "ИСТИНА", "ЛОЖЬ" (регистронезависимо).

В Excel в ячейку заносится значение логического типа (в объектной модели Calc логический тип ячейки отсутствует).

В Calc при занесении "TRUE", "FALSE" в свойство Formula в ячейку будут занесены числа 1 и 0 (формат ячейки не меняется). При занесении текcтов "ИСТИНА", "ЛОЖЬ" в свойство FormulaLocal в ячейку заносятся числа 1, 0 и формат ячейки меняется на BOOLEAN.

6. Интерпретация текстов, содержащих ошибочные значения.
Речь идет о значениях "#DIV/0!", "#N/A" и их локализованных аналогах.

В Excel в этих случаях в ячейку будут занесены значения ошибочного типа (в объектной модели Calc ошибочный тип ячейки явно не присутствует) (?).

В Calc такие тексты не интерпретируются специальным образом.

7. В Calc при занеcении свойства Formula в случаях, когда занесенное значение может быть интерпретировано как число, дата, логическое значение в соответствии с локализацией по умолчанию (в нашем случае ru_RU) и не может быть интерпретировано как число, дата, логическое значение в соответствии с локализацией en_US, в ячейку заносится исходный текст, а формат ячейки меняется на текстовый.

8. Интерпретация текстов, "похожих" на числа.
Если текст может быть интерпретирован как число в локализации en_US (Formula) или ru_RU (FormulaLocal), то в ячейку заносится число. При анализе текста отбрасываются возможные начальные и конечные пробелы. Текст может содержать число как в "обычном", так и в "научном" формате.

В случае использования разделителей тысяч в Excel каждая группа цифр, кроме крайней левой, должна содержать не менее трех знаков.
В случае использования разделителей тысяч в Calc каждая группа цифр, кроме крайней левой, должна содержать три знака.

Для чисел, содержащих разделители тысяч и(или) чисел в "научном" формате Excel меняет формат ячеек на соответствующий.

Обе программы распознают текст, содержащий число с заключительным знаком "%", заносят в этом случае в ячейку соответствующее число, деленное на 100, и меняют формат ячейки на "процентный".

Правила для текстов, "похожих" на даты, довольно сложны, постараюсь их сформулировать в отдельном сообщении.
« Последнее редактирование: 26 Декабрь 2021, 18:14 от sokol92 » Записан

Владимир.
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!