LibreOffice 5.2 - открытие файла в формате Excel XML 2003

Автор olegp, 27 января 2017, 12:01

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

olegp

При открытии файла Excel XML 2003, Calc загружает процессор на 100%. При этом, если файл относительно небольшой, то через некоторое время файл все же открывается. Большие - выдают "Ошибку при открытии файла".
Файл получен из внешнего источника именно в этом формате, так что интересует именно этот вопрос - что сделать, чтобы он нормально открывался именно в LibreOffice? Естественно, Excel проблем не видит, открывая этот файл за доли секунды. Тот же файл пересохраненный хоть Excel'ем, хоть Calc'ом в другом формате открывается без проблем.

mikekaganski

О....... это древняя проблема. https://bugs.documentfoundation.org/show_bug.cgi?id=67478

Но отправленный Вами файл открывается у меня в версиях 5.2.5.1 и 5.3.0.2 нормально.
С уважением,
Михаил Каганский

olegp

Конкретно этот - да. Я специально вложил небольшой, чтобы его можно было открыть, полюбовавшись на полоску внизу :).
Реальные файла - в разы больше.
Так вот. Я так понимаю, баг не исправлен и исправляться не будет?

mikekaganski

Ну, что значит "не будет"? Это некорректная постановка вопроса. Пока нет заинтересованных. Может быть, Вы знаете кого-то, кто мог бы этим заняться?
С уважением,
Михаил Каганский

olegp

Увы нет, мне нужно просто открыть файл :).

mikekaganski

Погодите, ведь у Вас Excel? а этот баг про Word
У меня Ваш файл открывается за 1 секунду.
Вы уверены, что те файлы, о которых Вы говорите, что они выдают ошибку, нормальные? Я поискал ошибки про Excel XML - так ничего не нашёл, кроме ошибок при недопустимом формате (который MS Excel может игнорировать)

Приложили бы лучше сбойный файл
С уважением,
Михаил Каганский

olegp

Ок, я подготовлю и выложу файл в понедельник. А сейчас меня с работы выгоняют, у нас пропускная система  :-\

kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

olegp

#8
Пускают пока :).
Я вот подумал, что стоит изложить ситуацию с самого начала.
У нас базовый инструмент для разработки - Oracle Forms 6i богом забытого 1996 года выпуска. Нравится, не нравится - корпоративный стандарт. Родной выгрузки в Excel в нем не предусмотрено. До недавнего времени, я успешно справлялся с этой проблемой через пакет для работы с протоколом OLE2.
И все было бы хорошо, но начальству пришла в голову светлая мысль - перевести ПОЛОВИНУ пользователей на LibreOffice. Почему - не знаю, нам объявили, что это новый корпоративный стандарт :), выполняйте. Ну ок, я начал искать способ выгрузки и в Excel и в Calc. Через OLE2 не получилось из-за ограничений средства разработки. Однако, Forms нормально работает с текстовыми файлами, так что я начал искать какой-нибудь "более или менее текстовый формат" :), который я мог бы сформировать на диске и который мог бы быть открыт обеими электронными таблицами. И такой формат нашелся :) - Excel XML 2003.
Быстренько сделал тестовый файлик, убедился, что он открывается и там, и успокоился. Но как только дело дошло до реальных объемов, выяснилось, что Calc не в состоянии открыть даже не то что большую, но даже и средней величины таблицу. (Excel на них даже не спотыкается.)
Проблема в том, что импорт именно из этого формата грузит процессор на 100% и процедура открытия сбрасывается по таймауту.
Все простые варианты решения я перепробовал. Выяснил, что не помогает пересохранение файла Calc'ом, что любые другие форматы того же самого файла читаются без проблем. Погуглил про эту ошибку - оказалось люди жаловались на нее еще со времен 2-ой версии, но потом... то ли ошибку устранили, то ли форматом этим перестали пользоваться... но готового решения не нашел.
Прикрепляю реальный файл, который у меня не открывается (ну, почти реальный :)). Но на всякий случай - если у Вас Core i7 последней версии, то может быть его мощности и хватит, чтобы уложиться до таймаута. Мой конфиг - Core2 Quad Q9300 / Windows 7 32-bit / McAfee VirusScan Enterprise (богомерзкая штучка, но ничего не поделаешь - корпоративный стандарт  :()

mikekaganski

Ага, таймаут... :) знаю.
Это? https://bugs.documentfoundation.org/show_bug.cgi?id=65980
Оно неправильно говорит "общая ошибка ввода-вывода" - должно говорить что-то вроде "Операция заняла слишком долго - продолжить?"
Если "повторить" - оно продолжается дальше. Потом снова ругнётся по таймауту, и так до открытия (либо до отмены).

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

kompilainenn

ищите другой формат для экспорта из оракла. ваша проблема решена не будет
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

olegp


mikekaganski

@kompilainenn: ну ведь ты написал не подумав.

Проблема OP - в том, что он не может открыть файл из-за ошибки. По крайней мере так заявлено в исходном посте.

И именно в этом OP ошибается (из-за неправильного текста в сообщении о таймауте): диалог говорит
"General input/output error."
[Retry] [Abort]

Но на самом деле это должно выглядеть так:
"Операция заняла слишком долго. Подождать ещё?"
[Да] [Прервать]

Если нажать "Retry", то программа подождёт ещё 60 секунд и выдаст это сообщение снова. Но импорт-то продолжается! И после нескольких "Retry" она нормально открывает файл.

Так что тут три проблемы, и твоё "решена не будет" относится только к одной из них:
1. Проблема "Невозможно открыть": это ошибка восприятия, решается;
2. Проблема "Неправильный текст сообщения": весьма реально, что будет решена;
3. Проблема скорости: вот тут трудно.
С уважением,
Михаил Каганский

olegp

Для меня в общем-то без разницы. Бабушка-бухгалтер не будет жать на сообщение об ошибке, что бы там не говорилось, она будет топать ножонками и жаловаться начальству :(.
Так что в целом ситуация безысходная - нужен другой формат... а его-то и нет :(.

mikekaganski

#14
Ну, я не уверен в том, что прямо нет варианта.
Будь я на Вашем месте, я бы попробовал автоматизировать постпроцессинг этих файлов, например, в XLS(X):
1. Имеем XML
2. Используя xsltproc и XSL ЛО, конвертируем его, например, в fods (см. https://bugs.documentfoundation.org/show_bug.cgi?id=65980#c16)
3. Используя ЛО из командной строки, конвертируем его в XLS(X).

Сделав это на сервере, получим таймаут при экспорте из оракла, но мгновенную обработку потом у пользователя. Без всяких окошек с ошибками.

Или как вариант: сразу генерируйте fods (это XML), и конвертируйте без лишнего шага.
С уважением,
Михаил Каганский