Формулы в OOXML
На страницу 1, 2 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 без использования формул, поэтому не вижу ничего ужасного в том, что в функции есть ошибка в поддержке сложных формул (думаю, что формулы сложнее суммирования и умножения на самом деле довольно редко используются). |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|