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

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 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
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

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

#1

15 мар 2021, 14: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, 18: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
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#2

15 мар 2021, 14:29

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

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

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

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

#3

15 мар 2021, 14: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
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

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

#4

15 мар 2021, 14:35

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

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

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

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

#5

15 мар 2021, 15:02

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

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

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

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

#6

15 мар 2021, 16:13

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

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

Вот чтоб 75 раз не проставлять вот это всё в каждой строке! =)
Вложения
21-03-15-160956.png

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

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

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

#7

15 мар 2021, 18: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-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

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

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

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

#8

16 мар 2021, 13:44

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

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

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

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

#9

16 мар 2021, 14:07

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

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

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

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

#10

16 мар 2021, 14:34

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

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

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

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

#11

16 мар 2021, 14: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-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Закрыто

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей