Накопилось ещё некоторое количество “приёмчиков” работы с Open/Libre Office. Если предыдущая заметка на эту тему была посвящена LO Writer, то на сей раз – “подопытным” выступает пакет Calc (электронные таблицы).
Для затравки – простое, но часто нужное действие – перемещение строк и столбцов таблицы.
Перемещение столбцов / строк
- Выделить нужный диапазон при помощи выделения всего столбца/строки (для этого можно щелкнуть ЛКМ на заголовок столбца/строки).
- Кликнуть и зажать ЛКМ внутри выделенного диапазона (на самих выделенных ячейках с данными, не на заголовке ).
- Тащить мышью диапазон, затем при отпускании:
- Перезапишет тот диапазон ячеек, на который был перетащен
- При зажатом Alt – поменяет диапазоны ячеек местами
Изменение типа данных ячеек
- Выделить нужный диапазон ячеек (или весь столбец/строку целиком по клику на заголовок).
- Верхнее меню: Данные -> Текст по столбцам.
- ЛКМ на столбец в нижней области открывшегося окошка (для выделения диапазона, в котором требуется преобразование).
- Выбрать тип столбца – Ок.
Эту операцию удобно проиллюстрировать примером: есть столбец с датами, которые хранятся, как текст (т.е. тип данных внутри офиса у них – текстовый, такое часто встречается при работе с кривыми выгрузками для Экселя). Использование меню Формат – Формат чисел – Дата не поможет в данном случае, т.к. дата хранится в виде строки ‘2023-06-16 .
LibreOffice Calc. Урок 58. Создание сводной таблицы. | Работа с таблицами
Вот здесь и пригодится изменение типа данных ячеек, после которого их уже можно будет отформатировать, как даты (чтобы изменить отображение, если надо).
Автоматическое вычисление промежуточных итогов
Ещё одна отличная функция Calc – можно получить итоговые значения для заданного набора данных (агрегировать). Буквально – в несколько кликов! Что отдельно приятно – функция работает с фильтрами.
- Ctrl + * – выделить все данные на листе. Можно выбирать и не весь диапазон, естественно.
- Данные -> Промежуточные итоги.
- Выбрать столбец, по которому агрегировать.
- Выбрать столбец для которого нужно получить агрегат.
- Выбрать агрегатную функцию.
- Кнопками слева вверху ( 1-2-3 и +/- ) можно переключать вид (свернуть-развернуть).
Проще всего продемонстрировать этот процесс на примере прошлого файла, в котором текст парсился в даты.
Выводы
Вывод, в общем-то, простой: если поискать, поинтересоваться и немного глубже узнать возможности электронных таблиц Calc – с их помощью можно достаточно широкий круг рутинных задач решить быстро и просто. Пользуйтесь с удовольствием!
Бонус: Автонумерацию строк в Calc можно сделать формулой, как и во Writer. Растягивать формулу удобно, выделив нужные строки (включая ячейку с формулой), и нажав Ctrl+D .
Источник: dimio.org
LibreOffice Calc. Урок 41. Функция печати. | Работа с таблицами
Формат ячеек в LibreOffice Calc
LibreOffice Calc — мощный инструмент, который позволяет создавать не только просто крупные таблицы, но и таблицы со сложной структурой, вычисляемыми полями и прочими «вкусностями». Один из навыков, который поможет свободно создавать такие таблицы, — грамотная работа с форматом ячеек в LibreOffice Calc.
Для начала определимся, какого вообще формата может быть ячейка. Заглянем в меню Формат->Ячейки или откроем контекстное меню нажатием правой кнопкой на ячейку и выберем Формат ячеек там. Всего различают 9 категорий, для большинства из которых можно выбирать разные способы отображения (опять же форматы):
— числовой. Соответственно, несколько различных отображений чисел;
— процентный. Значение, введённое в ячейку, умножается на 100 и выводится с символом процента. Может быть целым и с несколькими знаками после запятой;
— денежный. Разные формы вывода чисел с указанием валюты. По умолчанию это рубль, однако, для каждой конкретной ячейки можно выбрать свою валюту;
— дата. Различные варианты отображения даты: со временем, днём недели, кварталом, годом;
— время. Различные варианты отображения времени: с датой, секундами и миллисекундами, указателем 12-часового формата времени (am/pm);
— научный. Показывает числа в виде E+n, где Е — экспоненциальное представление (это значит, что число, предшествующее символу Е, умножено на 10 в степени n);
— дробь. Собственно, числа в виде дробей. Число, введённое в виде десятичной дроби, будет так храниться в строке формул и выводиться в ячейке в виде натуральной дроби — целая+дробная части, разделённые наклонной чертой(/);
— логический. Позволяет возвращать в нужную ячейку результат выполнения какой-либо логической функции. Проще объяснить алгоритм работы данного формата на примере. Допустим, нам нужно узнать, равны ли числа, введённые в ячейках C4 и E4:
Для этого в ячейке B7 мы запишем функцию IF (ЕСЛИ), которая будет возвращать нам 0, если числа не равны, и 1, если равны. Если ячейка B7 будет иметь формат отличный от логического, в качестве результата работы функции мы будем видеть 0 или 1. А если логический — вместо нуля отобразиться слово «ЛОЖЬ», а вместо 1 — «ИСТИНА». Более наглядный результат сравнения, не правда ли?
Если слово «ИСТИНА» отображается, а «ЛОЖЬ» — нет, тогда стоит проверить, не скрываются ли в вашем документе нулевые значения. Как об этом узнать — читайте ниже.
— текст. Всё введённое в ячейку будет отображаться без каких-либо преобразований. Например, у артиклей с нолями впереди не будут отбрасываться нули.
Плюс есть особый формат, в котором хранятся все пользовательские варианты изменения стандартных категорий. Чтобы внести изменения в какой-либо вариант отображения формата используем блок Параметры , располагающийся ниже перечисления категорий:
С его помощью можно изменять количество знаков после запятой и ведущих нулей, вводить разделитель разрядов, выделять отрицательные числа красным цветом.
Самый простой и оптимальный вариант — установить всем ячейкам листа один, наиболее подходящий формат, а затем выделять ячейки другого типа и менять формат для них. По умолчанию формат ячейки является числовым, однако, опыт показывает, что во избежание проблем с отображением лучше выбирать категорию Текст. Чтобы выделить все ячейки листа, достаточно нажать на пустой белый квадрат в левом верхнем углу таблицы (на скриншоте выделен красным):
Аналогично, можно поменять формат столбцу, строке, группе ячеек и одной ячейке. Достаточно нажать на название столбца или строки, чтобы выделить их. Группу смежных ячеек выделяют перетаскиванием мыши, а отдельные, не смежные ячейки, — выделением с зажатой клавишей Ctrl.
При копировании или перемещении ячейки её формат сохраняется.
Иногда у пользователей возникают проблемы с отображением формул. Обычно, сразу после перехода из ячейки с формулой, она начинает «отрабатывать» — выводить результат. Однако, существует опция, позволяющая отобразить все формулы в таблице, не показывая полученные цифры. Вот так:
Чтобы включить/отключить её, зайдем в меню Сервис->Параметры , в окне слева выберем пункт LibreOffice Calc->Вид и установим/снимем галочку Показать->Формулы :
Аналогично можно скрывать и показывать нулевые значения — соответствующая галочка находится в том же списке Показать .
В данной статье мы постарались рассмотреть основные приёмы работы с форматом ячеек в таблицах, созданных в LibreOffice Calc. Если у вас остались вопросы, вы можете задать их ниже — в комментариях или на нашем форуме. Мы постараемся оперативно на них ответить
5 comments
— 24 февраля 2014 Reply В этой программе вполне удобная таблица, в этом я убедился у себя на работе, когда мне дали задание составить опись наших товаров, если бы я пользовался какой ни будь другой программой у меня бы ушло намного больше времени.
Вячеслав — 28 ноября 2014 Reply Здравствуйте, на работе видел как парень создал в calc таблицу где выбирал из созданных шаблонов определенный текс,
например: Краска : и варианты выбора : 1, 2, 3,4,5,6,7 и тд, не подскажете как такое сделать что бы выбирать варианты?
Спасибо очень нужно!
С уважением к Вам
Катерина — 30 ноября 2014 Reply Вячеслав, рассказываю Выделяете тот столбец, диапазон или ячейку, где вам нужно, чтобы такой список работал. Идёте в пункт меню Данные->Проверка… На вкладке Критерий выбираете Разрешить->Список. Внизу откроется поле для ввода списка, забиваете туда всё нужное и пользуетесь.
Ёхан — 25 февраля 2016 Reply Поехали — как в одной ячейке написать два числа? Вид такой 342 876. Чтобы не «склеивались». Различные разделители не интересуют, только пробел.
Константин — 1 марта 2016 Reply Выделить ячейку или диапазон, Правой кнопкой -> Формат Ячеек — > Текст, пишем числа через пробел.
Источник: libreoffice.su
Десять полезных рецептов макросов LibreOffice
Макросы — отличный способ автоматизировать задачи в приложениях для работы с электронными таблицами, будь то старый добрый Microsoft Excel или столь же эффективная альтернатива FOSS, LibreOffice Calc. Самое лучшее в макросах то, что они написаны на очень простом языке под названием Basic.
Как следует из самого названия, Basic — это мягкий язык программирования, на самом деле разработанный с учетом простоты использования. Например, верхний/нижний регистр не имеет значения для имен переменных или ключевых слов ( if/IF , sub/Sub , function/Function эквивалентны), фигурные скобки функций необязательны, как в Ruby, а преобразование типов происходит автоматически. Это делает Basic одинаково полезным как для опытных пользователей, так и для программистов. Макрос LibreOffice Basic — это просто функция или подпроцедура, которая выполняет определенную полезную задачу. В этом уроке мы увидим десять таких полезных макросов, которые могут помочь вам с различными задачами автоматизации.
Рецепт 0: Как создать макрос LibreOffice
Хотя макросы также можно создавать в Writer и Draw, в этом конкретном руководстве мы ограничимся электронными таблицами (Calc). Чтобы создать макрос, просто откройте электронную таблицу в LibreOffice и перейдите в меню Tools->Macros->Organize Macros->LibreOffice Basic . После этого, если вы хотите создать макрос, специфичный для вашей электронной таблицы (как это обычно бывает), разверните файл электронной таблицы слева, выберите Standard и нажмите New . Это откроет Редактор макросов LibreOffice в виде отдельного окна.
Рецепт 1: Чтение содержимого ячейки
Одной из самых основных вещей, необходимых для автоматизации, является чтение содержимого ячейки. Следующий фрагмент кода делает именно это:
Sub read_cell dim document as object document = ThisComponent sheet = document.Sheets(0) MsgBox(sheet.getCellByPosition(0, 0).String) End Sub
dim — это ключевое слово, используемое для объявления переменной, но объявление является необязательным, если только Option Explicit не указано в начале модуля. ThisComponent — это объект LibreOffice, который ссылается на текущую электронную таблицу (или письменный документ в случае Writer).
Здесь важно выражение sheet.getCellByPosition(0, 0).String , которое получает содержимое первой ячейки в первой строке. На ячейки можно ссылаться, используя систему координат, где (0,0) относится к ячейке в строке-0 и столбце-0. Таким образом, с помощью этого простого метода можно получить любое значение во всей электронной таблице.
Чтобы запустить макрос из редактора, просто поместите курсор внутрь sub или function тела любого макроса и нажмите F5 (или щелкните значок Run BASIC на панели инструментов).
Рецепт 2: Изменить содержимое ячейки
Еще одна часто необходимая вещь — возможность изменить содержимое ячейки. Следующий код устанавливает для первой ячейки в первой строке значение «Hola! Mundo», испанское выражение «Привет! Мир»:
Sub change_cell dim document as object document = ThisComponent sheet = document.Sheets(0) sheet.getCellByPosition(0, 0).String = «Hola Mundo!» MsgBox(«Done») End Sub
Рецепт 3: Поиск и замена
Поиск и замена определенных строк может быть важной частью вашей процедуры автоматизации. Ниже приведен забавный макрос, который ищет имена некоторых экспертов по Linux (таких как Линус, Ричард, Питер и т. д.) и заменяет их фамилиями (Торвальдс, Столлман, Энвин):
Sub replace_text Dim names() As String Dim surnames() As String Dim n As Long Dim document As Object Dim sheets as Object Dim sheet as Object Dim replace As Object names() = Array(«Linus», «Richard», «Peter», «Greg», «Bill») surnames() = Array(«Torvalds», «Stallman», «Anvin», «Kroah», «Gates») document = ThisComponent rem .CurrentController.Frame rem sheet = doc.CurrentSelection.Spreadsheet sheets = document.getSheets() sheet = sheets.getByIndex(0) replace = sheet.createReplaceDescriptor rem document.createReplaceDescriptor in case of Writer rem replace.SearchRegularExpression = True For n = lbound(names()) To ubound(names()) replace.SearchString = names(n) replace.ReplaceString = surnames(n) sheet.replaceAll(replace) Next n MsgBox(«Done») End Sub
names() и surnames() на самом деле являются массивами. В отличие от C и Java, массивы в Basic объявляются и доступны с помощью круглых, а не квадратных скобок. Кроме того, в объявлении массива объявляется верхняя граница, а не общий размер. Таким образом, foo(2) на самом деле представляет собой массив размера 3 с индексами от 0 до 2.
Рецепт 4: Регулярные выражения
Регулярные выражения очень полезны при поиске и замене текста на основе определенных шаблонов. Следующий макрос выполняет поиск всех адресов электронной почты в электронной таблице и заменяет каждый из них на [email protected] :
Рецепт 5: Показать диалоговое окно открытия файла
Отображение диалогового окна открытия файла является очень распространенным требованием, особенно когда вы хотите открыть внешний файл для обработки. В приведенном ниже коде объект FilePicker используется для отображения диалогового окна открытия файла и возврата выбранного имени файла:
function show_open_dialog dim aurl as object dim s as string dim oDlg as object oDlg = createUnoService(«com.sun.star.ui.dialogs.FilePicker») oDlg.setMultiSelectionMode(false) oDlg.appendFilter(«CSV Files (.csv)», «*.csv» ) oDlg.execute aUrl = oDlg.getFiles() s = aUrl(0) if len(s) > 0 then MsgBox(«File Selected: » chr(13)) end if show_open_dialog = s end function
createUnoService — это особый метод LibreOffice для создания вспомогательных объектов, таких как FilePicker в этом примере. Метод appendFilter используется для фильтрации только CSV файлов в диалоговом окне.
Рецепт 6: Показать диалоговое окно сохранения файла
Для отображения диалогового окна сохранения файла используется тот же объект FilePicker , который инициализируется аргументом FILESAVE_AUTOEXTENSION :
function show_save_dialog dim aurl as object dim s as string dim oDlg as object sFilePickerArgs = Array(_ com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION ) oDlg = createUnoService(«com.sun.star.ui.dialogs.FilePicker») oDlg.initialize(sFilePickerArgs()) oDlg.setMultiSelectionMode(false) oDlg.appendFilter(«CSV Files (.csv)», «*.csv» ) oDlg.setTitle(«Save As. «) if oDlg.execute() then aUrl = oDlg.getFiles() s = aUrl(0) if len(s) > 0 then MsgBox(«File Selected: » chr(13)) end if else s = «» end if show_save_dialog = s end function
Рецепт 7. Файловый ввод-вывод: чтение из файлов
Ввод-вывод необработанных файлов — это функция, предоставляемая почти каждым языком, а макросы Basic делают ее почти слишком простой. Код ниже используется для чтения CSV-файла с тремя столбцами.
Имя файла задается в переменной filename . Переменная num представляет собой числовой тег, используемый для ссылки на обработчик файлов, а FreeFile() возвращает свободный доступный номер, который можно использовать для тегирования. Оператор open говорит сам за себя. В Basic файлы можно открывать в режимах Input, Output и Binary. Наконец, оператор input используется для фактического чтения файла в переменные строка за строкой.
sub file_io_read dim v1, v2, v3 filename = «/home/prahlad/data/test.csv» num = FreeFile() open filename for input as #num do while not eof(num) input #num, v1, v2, v3 print v1 ::» «::» Done» end sub
Рецепт 8. Файловый ввод-вывод: запись в файлы
Для записи в файлы обработчик открывается в режиме output вместо input , а оператор write используется для фактической записи переменных в файл.
sub file_io_write filename = «/home/prahlad/data/dummy.csv» num = FreeFile() open filename for output as #num write #num, «col1», «col2», «col3» write #num, «1», «2», «3» write #num, «4», «5», «6» close #num msgbox «Done» end sub
Рецепт 9: Загрузить данные из CSV-файла
Помимо работы в режиме необработанного ввода-вывода, иногда требуется загрузить полный CSV-файл в виде листа в текущем документе. Используя функцию show_open_dialog , которую мы изучали ранее, следующий макрос сначала запрашивает у пользователя диалоговое окно открытия файла, а затем загружает указанный CSV-файл как новый лист:
sub load_from_csv fname = show_open_dialog if len(fname)>0 then dim fileProps(1) as new com.sun.star.beans.PropertyValue fileProps(0).Name = «FilterName» fileProps(0).Value = «Text — txt — csv (StarCalc)» fileProps(1).Name = «FilterOptions» fileProps(1).Value = «44,34,76,1,,0,false,true,true,false» document = StarDesktop.loadComponentFromURL(fname, «_blank», 0, fileProps()) end if msgbox «Done» end sub
fileProps(0) — это переменная свойства, используемая для указания формата файла CSV, а fileProps(1) указывает параметры форматирования по умолчанию для CSV (например, разделитель, набор символов и т. д.).
Рецепт 10: Скопируйте текст в буфер обмена
Ваша пользовательская обработка может включать в себя помещение определенного текста в буфер обмена из LibreOffice Calc. Следующий код показывает, как поместить строку «Hola!» в системный буфер обмена:
sub copy_to_clipboard oClip = CreateUnoService(«com.sun.star.datatransfer.clipboard.SystemClipboard») oTR = createUnoListener(«TR_», «com.sun.star.datatransfer.XTransferable») oClip.setContents(oTR, null) msgbox «Done» end sub Function TR_getTransferData( aFlavor As com.sun.star.datatransfer.DataFlavor ) As Any If (aFlavor.MimeType = «text/plain;charset=utf-16») Then TR_getTransferData = «Hola!» EndIf End Function Function TR_getTransferDataFlavors() As Any Dim aF As new com.sun.star.datatransfer.DataFlavor aF.MimeType = «text/plain;charset=utf-16» aF.HumanPresentableName = «Unicode-Text» TR_getTransferDataFlavors = Array(aF) End Function Function TR_isDataFlavorSupported( aFlavor As com.sun.star.datatransfer.DataFlavor ) As Boolean TR_isDataFlavorSupported = (aFlavor.MimeType = «text/plain;charset=utf-16») End Function
Вторая функция является обратным вызовом и используется для сохранения строки в буфер обмена. Последние две являются вспомогательными функциями, которые используются вспомогательными объектами SystemClipboard и XTransferable и являются обязательными.
Демо
Наконец, рабочую электронную таблицу LibreOffice Calc, реализующую все эти примеры, можно найти здесь.
использованная литература
- http://api.libreoffice.org/examples/examples.html#Basic_examples
- https://forum.openoffice.org/en/forum/viewtopic.php?f=25t=13783
Источник: digitrain.ru