Функция FILTERXML (ФИЛЬТР.XML) LibreOffice Calc

Автор ost, 16 марта 2021, 18:22

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

sokol92

Каков размер Вашего файла? Может быть, он слишком велик для размещения в ячейке.
Владимир.

ost


sokol92

Владимир.

ost

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

sokol92

Давайте. Главное, чтобы результирующий файл у Вас на компьютере приводил к ошибке (или зависанию). Кстати, кодировка у файла UTF-8 ?
Владимир.

ost

Цитата: economist от 17 марта 2021, 09:40парсить на Python
Python для меня непролазная чаща. К тому же, насколько я понял, нет встроеных в LO средств отладки. Внесение изменений сложное в сравнении с LO Basic.

ost


sokol92

Тогда понятно. LO (и весь цивилизованный мир :) ) уже давно перешел на UTF-8. Прошу прощения, что забыл о кодировке сразу написать. Попробую добавить возможность обработки альтернативных кодировок (не быстро).
Какова первая строка Вашего файла, типа:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Владимир.

ost

#23
Такой строки здесь нет.
Здесь все не как у людей. =)

ost

Цитата: sokol92 от 17 марта 2021, 17:21Попробую добавить возможность обработки альтернативных кодировок (не быстро).
Спасибо.

ost

Вот еще какой вопрос. Насколько эффективно для моих целей (а это, по-сути, разбор одного или кучи xml-файлов и выдергивание из них определенных данных и вставка их в лист Calc с целью дальнейшей обработки с помощью Basic) использовать XSLT? Или выучить Python проще?

sokol92

#26
Добавил кодировку - второй параметр функции FILETOSTR (пример в ячейке A1). Если кодировка UTF-8, то задавать второй параметр не надо.
О возможных значениях кодировок см. документацию по методу setEncoding.

По поводу обработки XML с помощью Python я высказал свое мнение в ответе #13. Все форматы LO представляют собой архивы, состоящие из XML-файлов, так что в этом авторы LO знают толк. Что касается XLST, то это язык для преобразования XML из одного вида в другой. Если Ваша задача именно такая, то да, есть смысл освоить.
Владимир.

economist

Цитата: ost от 17 марта 2021, 17:12Python для меня непролазная чаща. К тому же, насколько я понял, нет встроенных в LO средств отладки.

Уже пару лет как есть расширение APSO, https://extensions.libreoffice.org/en/extensions/show/apso-alternative-script-organizer-for-python

Питон учится за неделю-две, не зря его сделали учебным и на нем изучают все алгоритмы в вузах.

Я не призываю "бросать всё" и учить Питон, но решенных и "полностью разжеванных" программистских задач под ним - море разливанное, особенно что касается импорта/обработки/анализа/визуализации данных. 50% всего этого - один Python и 50% - сотня других технологий. Calc, если его приравнять к Excel, в этом списке - "в середины второй половины". Условно, конечно.   

Кстати, стык LO+UNO+Python - тоже очень даже непрост. Но в том-то и дело что код с LO Basic на Python+UNO переписывается влет, т.к. команды API - одинаковые. И самый большой профит получается "между" API-командами, когда нужен банальный парсинг строк, операции с массивами итд. Для них в Python существуют структуры - списки, кортежи, словари, множества, которые реализуют чаяния программистов самым лучшим образом (из-за них и вся ненависть не-питонистов к языку - уж больно хорошо там это получилось реализовать).

Один 8кб XML - точно не повод для Питона, такой файл построчно считать Basic-ом и не париться. А вот гигабайтный CSV обработать и загнать в Calc или в Base SQLite - повод, "вкусный" пример я на Форуме приводил. Кода на "удаве" в 4 раза меньше, скорости - в 4 раза больше.



Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ost

Цитата: sokol92 от 17 марта 2021, 18:18Добавил кодировку
Спасибо. Работает.
Текст xml-файла копируется в ячейку с пользовательской функцией.
Отлично работает выражение типа
=ФИЛЬТР.XML(FILETOSTR("D:\ПутьКФайлу.xml";"windows-1251");"//sender/inn")

ost

#29
economist,
харизматичный вы человек.
Попробую заглянуть в Python. Добавить бы к суткам 2-3 часа. =)

К слову об APSO. Такая грусть. https://yadi.sk/i/lYNoQVuiFjCPTw