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