CftClub.ru
Клуб специалистов ЦФТ-Банк

Формулы в OOXML
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеПн Июл 13, 2015 14:25   Формулы в OOXML Ответить с цитатой
Полезность: Нет оценки
Уважаемые господа знатоки!
Пытаемся перейти с MS Office на Open Office. При этом натолкнулись на странную проблему - далеко не любая функция может быть установлена в формульной ячейке. Суммирующие функции - пожалуйста, типа '=SUM(B2:B4)'. Но если поставить что-то типа '=IF(B2 < 0, -1, 1)', то у Open Office съезжает крыша, и он даже не визуализирует EXCEL'овский файл. Сначала он задает вопрос
"Ошибка в части содержимого в книге IBS335.xlsx. Выполнить попытку восстановления? Если вы доверяете источнику...нажмите "Да""
При нажатии "Да" возникает глубокомысленное окошко
"Замененный компонент: часть /xl/worksheets/sheet1.xml с ошибкой XML. Недопустимый знак в полном имени. Строка 1, столбец 935.
Удаленные записи: Формула из части /xl/calcChain.xml (Свойства вычислений)"
При этом попытки замены в формуле английской нотации на русскую и запятых на точки с запятыми результата не меняют...
Имел кто-нибудь опыт борьбы с формулами в OOXML?
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеПн Июл 13, 2015 17:50    Ответить с цитатой
Полезность: Нет оценки
Сегодня были такие же ошибки, причем странно как то получается... сначала код работал, потом на какое то время перестал, потом снова заработал...изменения при этом не вносились
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеПн Июл 13, 2015 18:39    Ответить с цитатой
Полезность: Нет оценки
Многочисленные екзерсисы показали, что проблемой является знак "<".
Замена в вышеуказанной формуле
'=IF(B2 < 0, -1, 1)'
на
'=IF(NOT(B2 >= 0), -1, 1)' приводит к нормальной выгрузке EXCEL!
Этот факт приводит к полной потере доверия к пакету OOXML...
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Июл 14, 2015 10:01    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Этот факт приводит к полной потере доверия к пакету OOXML...

Вот при чём тут пакет? Пакет OOXML предложен Microsoft, между прочим. И в Excel никаких заморочек не вызывает.
У вас, скорее всего, пропадает доверие к пакету Open Office ?

У вас точно OpenOffice 4.1.1 ?

А ещё можно попробовать LibreOffice.
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеВт Июл 14, 2015 14:22    Ответить с цитатой
Полезность: Нет оценки
Может быть, я неточно выражаюсь - у нас патч 15.2, я использую библиотеку API_XL из дистрибутива(структура OOXML (Open Office XML))
А что, где-то в дистрибутиве есть еще и LibreOffice? И где я могу увидеть версию OpenOffice, на которой реализована библиотека API_XL?
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеСр Июл 15, 2015 06:03    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
...И где я могу увидеть версию OpenOffice, на которой реализована библиотека API_XL?

Есть стандарт - формат Excel 2003.
по-сути, это текстовый файл - не бинарник.
https://en.wikipedia.org/wiki/Microsoft_Office_XML_formats
Ваш Оракловый (цфт-шный) код генерит текстовый файл с расширением XMS.
Попробуйте:
1) открыть этот файлик MSExcel - для проверки правильности формата
2) открыть этот файлик Вашим заменителем Экселя.
Если MSExcel откроет нормально - значит дело НЕ в цфт-коде, а в клиентском ёкселе.
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеСр Июл 15, 2015 06:17    Ответить с цитатой
Полезность: Нет оценки
Damir, а как я смогу увидеть сгенеренный XMS-файл, где он залегает?
Цитата:
...значит дело НЕ в цфт-коде, а в клиентском ёкселе.

У нас лицензионный MS Office Professional 2013, насколько я знаю, все прежние форматы MS Office он открывает без проблем.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеСр Июл 15, 2015 06:44    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Damir, а как я смогу увидеть сгенеренный XMS-файл, где он залегает?

vek21 пишет:

Ошибка в части содержимого в книге IBS335.xlsx.

Ну вот где Вам выдает это сообщение? Там и поищите на диске файлик IBS335.xlsx.
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеСр Июл 15, 2015 06:56    Ответить с цитатой
Полезность: Нет оценки
Damir, при чем тут файл XLSX? Его я, естественно, вижу, открыть его не могу из-за "Ошибки в части содержимого в книге IBS335.xlsx". Вы же говорили о текстовом файле XMS?
Цитата:
Ваш Оракловый (цфт-шный) код генерит текстовый файл с расширением XMS.

Его я как могу найти? Вообще на диске нет ни одного файла с расширением XMS...
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Июл 15, 2015 07:16    Ответить с цитатой
Полезность: Нет оценки
текст удалён

Последний раз редактировалось: Random (Ср Июл 15, 2015 07:44), всего редактировалось 1 раз
Amper
Профи


Вступление в Клуб: 29.10.2010
СообщениеСр Июл 15, 2015 07:35    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Этот факт приводит к полной потере доверия к пакету OOXML...

Очень странный подход... Если есть проблема - заведите заявку на дефект - и проблема будет решена.
Вы при любой ошибке теряете доверие к продукту и больше его не используете? Тогда назовите мне, пожалуйста, список идеальных продуктов без дефектов, которые вы используете.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Июл 15, 2015 07:42    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Damir, при чем тут файл XLSX? Его я, естественно, вижу, открыть его не могу из-за "Ошибки в части содержимого в книге IBS335.xlsx". Вы же говорили о текстовом файле XMS?
Цитата:
Ваш Оракловый (цфт-шный) код генерит текстовый файл с расширением XMS.

Его я как могу найти? Вообще на диске нет ни одного файла с расширением XMS...


Предлагаю изменить программу по умолчанию для файлов с разрешением xlsx. Для этого я выполнял следующее:
1. Открываете сформированный АРМом корректный файл с помощью той программы, которая установлена по умолчанию.
2. Сохраняете этот файл с именем по умолчанию в папке, скажем, c:\ibso
3. открываете в проводнике эту папку, устанавливаете курсор на этом файле и выполняете пункт меню "Открыть с помощью"
4. выбираете ту программу, которой хотите открывать некорректно формируемый файл, назначаете её по умолчанию. Закрываете открытый этой программой файл, он больше не нужен.
5. Запускаете операцию, которая формирует файл с некорректной формулой. Он должен открыться во вновь установленной по умолчанию для этих файлов программе.
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеСр Июл 15, 2015 08:04    Ответить с цитатой
Полезность: Нет оценки
Amper, конечно, я зарегистрирую ошибку и ее, думаю, быстро исправят. Но, подумайте сами - скажем, вы исследуете новый предложенный вам компилятор и вдруг обнаруживаете, что у него возникает фатальная ошибка при выполнении логической операции (A < B)... Вы продолжите исследование компилятора? Мне кажется, здесь ситуация подобная - уж проверить функционирование основных формул EXCEL до объявления о миграции MS Office ==> Open Office ЦФТ должен был...
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеСр Июл 15, 2015 08:22    Ответить с цитатой
Полезность: Нет оценки
Random, я назначил "Блокнот" программой по умолчанию для XLSX-файлов. Но библиотека API_XL формирует на выходе именно XLSX-файл! (Неважно, с ошибками внутри или без) Именно XLSX-файл и открывается после генерации в "Блокноте"...
Amper
Профи


Вступление в Клуб: 29.10.2010
СообщениеСр Июл 15, 2015 10:39    Ответить с цитатой
Полезность: 1
vek21 пишет:
Amper, конечно, я зарегистрирую ошибку и ее, думаю, быстро исправят. Но, подумайте сами - скажем, вы исследуете новый предложенный вам компилятор и вдруг обнаруживаете, что у него возникает фатальная ошибка при выполнении логической операции (A < B)... Вы продолжите исследование компилятора? Мне кажется, здесь ситуация подобная - уж проверить функционирование основных формул EXCEL до объявления о миграции MS Office ==> Open Office ЦФТ должен был...


Начнем с того, что Вы путаете понятия "Open Office" и "Office Open XML" - речь не о поддержке офисного пакета "Open Office", а о поддержке вывода данных в формате файлов "Office Open XML (OOXML)", в той или иной степени поддерживаемом пакетами программ "MS Office", "Open Office", "Libre Office", "MS Excel Viewer".

Если я правильно помню (могу ошибаться), при выпуске OOXML также рассылались файлы с ограничениями реализации, одним из которых было отсутствие возможности вывода формул, поэтому никакой миграции формул "MS Office ==> Open Office" не было. И тому есть ряд причин. Дело в том, что с формулами есть несколько проблем:
1) Расчет формул поддерживают не все продукты, (например, MS Excel Viewer не считает формулы) - это означает, что рядом с формулой нужно положить рассчитанное значение, чтобы оно могло быть отображено пользователю. Это уже накладывает значительные ограничения на реализацию формул - нужно либо парсить и интерпретировать формулы (вычислять значения ячеек на уровне платформы), либо заведомо использовать простые формулы и вычислять их значения там, где формулы записываются, что во-первых создает организационные проблемы, а во вторых создает технические проблемы (при этом подходе не получится использовать формулы, зашитые в шаблоне).
2) Полноценная поддержка формул (как в "старом" EXCEL) подразумевает пересчет формул при вставке/удалении строк/столбцов, что опять же подразумевает полноценный парсинг формул и перестроение всех формул при действиях, изменяющих структуру таблицы, что может вызвать проблемы с производительностью.
3) Не до конца ясна целесообразность использования формул - если бы было больше отзывов от клиентов о необходимости формул в пакете OOXML, возможно это было бы дополнительной мотивацией к доработке пакета, но, видимо, клиенты такой обратной связи не дают (это лишь мое предположение, возможно, что это не так).

Насколько я понимаю, поддержка формул в упрощенном виде (без парсинга и пересчета) в OOXML добавлена относительно недавно, когда все дистрибутивные отчеты уже были переведены на OOXML без использования формул, поэтому не вижу ничего ужасного в том, что в функции есть ошибка в поддержке сложных формул (думаю, что формулы сложнее суммирования и умножения на самом деле довольно редко используются).
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru