Дополнение ячеек в LibreOffice

Языки программирования, IDE, компиляторы, интерпретаторы, гипервизоры и виртуальные среды
Правила форума
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
broken
Сообщения: 307
Зарегистрирован: 31 авг 2016, 22:45
Решено: 2
Благодарил (а): 18 раз
Поблагодарили: 12 раз

Дополнение ячеек в LibreOffice

Сообщение broken » 15 мар 2021, 11:03

Всем добра! :hi2:
Дано. Рабочий макрос в MS Excel

Код: Выделить всё

Sub kz()
'
' kz Макрос
'

'
Dim c As Range
For Each c In ActiveSheet.UsedRange
  If Not IsEmpty(c.Value) Then c.Value = ",'" & c.Value & "'"
Next
End Sub
Его цель: пройтись по заполненным ячейкам и добавить соответствующие символы в начале и в конце текста ячеек.
В начале вставляется ,' в конце '
Задача: адаптировать под LibreOffice Calc.
Ну и если адаптировать, то сделать универсальным. К примеру по выделению. Выделил область и он (макрос) именно в этой области и работает. :hm:

Решение demonlibra » 15 мар 2021, 15:03
Доступ к исходным данным осуществляется через calc?
Можно назначить на горячие клавиши

Код: Выделить всё

# Получаем содержимое буфера обмена
data=`xclip -sel clip -o`

# Заменяем разделитель параметров на перенос строки
OIFS=$IFS
IFS=$'\n'

# Перебираем данные
for cell in $data
	do
		new_data="${new_data},'$cell'"
	done

# Возвращаем разделитель переменных
IFS=$OIFS

# Вывод данных в терминал для отладки. Можно удалить.
echo -ne "${new_data:1}"

# Записываем результат в буфер обмена
echo -ne "${new_data:1}" | xclip -i -selection clipboard

Перейти к ответу ➙

В сети
Аватара пользователя

Chocobo
Сообщения: 9668
Зарегистрирован: 27 авг 2016, 19:57
Решено: 208
Откуда: НН
Благодарил (а): 741 раз
Поблагодарили: 2829 раз

Дополнение ячеек в LibreOffice

Сообщение Chocobo » 15 мар 2021, 11:29

Если я тебя правильно понял, то можно и без макроса (галку на регулярки ток не забудь в окне поиска):
Снимок экрана в 2021-03-15 14-22-45.png
Снимок экрана в 2021-03-15 14-23-39.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
   
Изображение

В сети
Аватара пользователя

rogoznik
Сообщения: 8302
Зарегистрирован: 27 июн 2017, 10:36
Решено: 90
Откуда: Нижний Тагил
Благодарил (а): 492 раза
Поблагодарили: 1496 раз

Дополнение ячеек в LibreOffice

Сообщение rogoznik » 15 мар 2021, 11:30

broken, ссылку на документацию я тебе дал еще в чате - читай, там много интересного
Это весь код макроса

Код: Выделить всё

REM  *****  BASIC  *****
Option VBASupport 1

Sub kz
Dim c As Range
For Each c In ActiveSheet.UsedRange
  If Not IsEmpty(c.Value) Then c.Value = ",'" & c.Value & "'"
Next
End Sub
ИзображениеИзображение

Аватара пользователя

Автор темы
broken
Сообщения: 307
Зарегистрирован: 31 авг 2016, 22:45
Решено: 2
Благодарил (а): 18 раз
Поблагодарили: 12 раз

Дополнение ячеек в LibreOffice

Сообщение broken » 15 мар 2021, 11:35

Chocobo, хм. В самом деле! Спасибо!

Аватара пользователя

demonlibra
Сообщения: 632
Зарегистрирован: 12 авг 2017, 06:09
Решено: 7
Откуда: Ростов-на-Дону
Благодарил (а): 15 раз
Поблагодарили: 129 раз

Дополнение ячеек в LibreOffice

Сообщение demonlibra » 15 мар 2021, 12:02

Это всё выглядит так как будто Вы используете электронные таблицы просто для замены символов в строках текста.
Какая конечная цель? Или для чего Вы это используете?
Если опишите задачу, может найдётся более удобное решение.
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-20.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 307
Зарегистрирован: 31 авг 2016, 22:45
Решено: 2
Благодарил (а): 18 раз
Поблагодарили: 12 раз

Дополнение ячеек в LibreOffice

Сообщение broken » 15 мар 2021, 13:13

Способ, предоставленный Chocobo подходит на все 100!
Задача - подготовить список для запроса SQL.
Исходно имеется список
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.

Имеется база данных.
Вот к примеру и надо узнать у кого к примеру отсутствует мобильный телефон для контакта. В день приходит к примеру 75 человек.
Соответственно получаем.
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.

Вот чтоб 75 раз не проставлять вот это всё в каждой строке! =)
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя

demonlibra
Сообщения: 632
Зарегистрирован: 12 авг 2017, 06:09
Решено: 7
Откуда: Ростов-на-Дону
Благодарил (а): 15 раз
Поблагодарили: 129 раз

Дополнение ячеек в LibreOffice

Сообщение demonlibra » 15 мар 2021, 15:03

Доступ к исходным данным осуществляется через calc?
Можно назначить на горячие клавиши

Код: Выделить всё

# Получаем содержимое буфера обмена
data=`xclip -sel clip -o`

# Заменяем разделитель параметров на перенос строки
OIFS=$IFS
IFS=$'\n'

# Перебираем данные
for cell in $data
	do
		new_data="${new_data},'$cell'"
	done

# Возвращаем разделитель переменных
IFS=$OIFS

# Вывод данных в терминал для отладки. Можно удалить.
echo -ne "${new_data:1}"

# Записываем результат в буфер обмена
echo -ne "${new_data:1}" | xclip -i -selection clipboard
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-20.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 307
Зарегистрирован: 31 авг 2016, 22:45
Решено: 2
Благодарил (а): 18 раз
Поблагодарили: 12 раз

Дополнение ячеек в LibreOffice

Сообщение broken » 16 мар 2021, 10:44

demonlibra, т.е. выделить и запустить? Или ему файл скармливать?

Аватара пользователя

demonlibra
Сообщения: 632
Зарегистрирован: 12 авг 2017, 06:09
Решено: 7
Откуда: Ростов-на-Дону
Благодарил (а): 15 раз
Поблагодарили: 129 раз

Дополнение ячеек в LibreOffice

Сообщение demonlibra » 16 мар 2021, 11:07

Если запустить сценарий, то содержимое буфера обмена будет обработано.
Для запуска сценария можно назначить горячие клавиши.
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-20.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 307
Зарегистрирован: 31 авг 2016, 22:45
Решено: 2
Благодарил (а): 18 раз
Поблагодарили: 12 раз

Дополнение ячеек в LibreOffice

Сообщение broken » 16 мар 2021, 11:34

demonlibra, выхлоп четкий! Вот только не понял каким образом в начале запятой нет? Ведь итоговое значение определяется newdata?

Аватара пользователя

demonlibra
Сообщения: 632
Зарегистрирован: 12 авг 2017, 06:09
Решено: 7
Откуда: Ростов-на-Дону
Благодарил (а): 15 раз
Поблагодарили: 129 раз

Дополнение ячеек в LibreOffice

Сообщение demonlibra » 16 мар 2021, 11:54

${new_data:1}

${string:position}
Извлекает подстроку из $string, начиная с позиции $position
Индексация начинается с 0

ПС Функционал можно расширить, добавить остальной текст запроса, сделать форму с выбором дополнительных данных, ...
Я для себя множество подобных рутинных задач таким образом решил. Например, этот сценарий я использую для автоматического обрамления ссылок bb-кодом [img], полученных от хранилищ изображений.
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-20.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Вернуться в «Программирование, скриптинг, виртуализация»