Текст таблица: Оформление текста таблицы – Простые текстовые таблицы

Оформление текста таблицы

Текст в ячейках таблицы оформляется практически так же, как и обычный текст, но есть и некоторые отличия:

  • Нельзя оформить буквицу в ячейке.

  • Выравнивание и отступы устанавливаются относительно краев ячейки, в которой находится текст.

  • Элементами списка могут быть как абзацы в ячейках, так и сами ячейки таблицы.

  • Можно устанавливать границы и заливку абзацев и текста в ячейках, но обычно так не делают. Вместо этого используют границы и заливку ячеек.

  • Можно использовать стили таблиц, в параметры которых входят и параметры текста в ячейках.

  • Нельзя в ячейке создать многоколоночный текст.

  • Есть вертикальное выравнивание, поворот текста и автоподбор параметров шрифта.

Вертикальное выравнивание текста

  1. Выделите фрагмент таблицы, для ячеек которого изменяется выравнивание. Если выравнивание изменяется в одной ячейке, ее можно не выделять, достаточно установить в ней курсор.

  2. Во вкладке Макетв группеВыравниваниевыберите один из девяти возможных вариантов.

При работе в других вкладках для вертикального выравнивания можно воспользоваться контекстным меню.

  1. Выровняйте текст «Экзамен» и «Зачет» по горизонтали и по вертикали по центру.

Поворот текста

Текст в ячейках таблице можно располагать не только горизонтально, но и под углом 90 сверху вниз или снизу вверх. Для этого используется кнопкаНаправление текставо вкладкеМакетв группеВыравнивание.

При работе в других вкладках для изменения направления текста можно воспользоваться контекстным меню.

  1. Поверните текст «Отлично».

Автоподбор параметров шрифта

Можно установить автоматический подбор параметров шрифта (интервал и масштаб) так, чтобы содержимое ячейки располагалось в одну строку от края до края ячейки.

  1. Выделите ячейки с названиями дисциплин.

  2. Во вкладке Макетв группе

    Таблицанажмите кнопкуСвойства.

  3. Во вкладке ЯчейкаокнаСвойства таблицынажмите кнопкуПараметры.

  4. В окне Параметры ячейкиустановите флажоквписать текст.

Если текст не помещался в ячейке в одну строку, он будет "уплотнен" за счет уменьшения масштаба (ширины) символов. Если ширина текста была меньше ширины ячейки, он будет "разрежен" за счет увеличения интервалов между символами.

При установке курсора в ячейку с вписанным текстом там может отображаться подчеркивание бирюзовым цветом. Обычно оно исчезает при выводе курсора из ячейки и в любом случае не выводится на печать.

Настройка полей ячеек

Поля ячейки определяют расстояние от границ ячейки до текста в ячейке. По умолчанию установлено левое и правое поле 1,9 мм, а верхнее и нижнее – 0 мм.

Увеличение полей ячеек облегчает восприятие таблицы. Уменьшение – делает таблицу более компактной.

Для изменения полей нажмите кнопку Поля ячейки во вкладке Макет в группе Выравнивание.

  1. Установите левое и правое поле 0,5 мм.

Размещение таблицы в документе

Установка режима обтекания текстом

Вставленная в документ таблица по умолчанию размещается без обтекания текстом с выравниванием по левому полю страницы.

Для выравнивания таблицы по краям страницы достаточно ее выделить и воспользоваться кнопками группы Абзац вкладки Главная.

Изменить режим обтекания и положение таблицы можно, перетащив ее мышью.

  1. Наведите указатель мыши на маркер перемещения таблицы, расположенный около ее верхнего левого угла так, чтобы около него отобразилась четырехнаправленная стрелка.

  2. Нажмите на левую кнопку мыши и перетащите таблицу.

Можно точно настроить положение таблицы на странице документа.

  1. Установите курсор в любой ячейке таблицы.

  1. Во вкладке Макетв группеТаблицанажмите кнопкуСвойства.

  2. Во вкладке ТаблицаокнаСвойства таблицыв разделеОбтеканиевыберите режимвокруги нажмите кнопкуРазмещение.

  3. В окне

    Размещение таблицыв разделеПо горизонталив раскрывающемся спискеотносительноможно выбрать, относительно какого элемента страницы будет выравниваться таблица:колонки,поляилистраницы, а в списке поляположениеможно выбрать расположение таблицы (Слева,Справа,От центра,Внутри,Снаружи) или ввести с клавиатуры требуемое значение в сантиметрах. Аналогично можно указать размещение таблицы и по вертикали.

Для отказа от режима обтекания таблицы текстом следует установить курсор в любой ячейке таблицы, во вкладке Макет в группе Таблица нажать кнопку Свойства, во вкладке Таблица окна Свойства таблицы в разделе Обтекание выбрать режим нет.

  1. Скопируйте из своего реферата 2-3 страницы текста.

  2. Разместите все созданные таблицы на одной странице, используя разные обтекания.

Простые текстовые таблицы

Перебрать ячейки простой текстовой таблицы очень легко. Макрос в 8.2.1.1 перебирает ячейки в текстовой таблице, содержащей видимый курсор. Каждая ячейка извлекается с помощью метода getCellByPosition(), который доступен только для простой текстовой таблицы. Если текстовая таблица содержит объединенные ячейки или ячейки, разделенные на несколько ячеек (split), то нужно использовать другой метод

Листинг 8.2.1.1: Перебрать ячейки простой текстовой таблицы.

Dim s As String

Dim oTable

Dim oVC

Dim oCell

Dim nCol As Long

Dim nRow As Long

oVC = ThisComponent.getCurrentController().getViewCursor()

If IsEmpty(oVC.TextTable) Then

Print "Видимый курсор не в текстовой таблице"

Exit Sub

End If

oTable = oVC.TextTable

For nRow = 0 To oTable.getRows().getCount() - 1

For nCol = 0 To oTable.getColumns().getCount() - 1

oCell = oTable.getCellByPosition(nCol, nRow)

s = s & oCell.CellName & ":" & oCell.getString() & CHR$(10)

Next

Next

MsgBox s

      1. Форматирование простой текстовой таблицы

Я использую метод форматирования текстовой таблицы, аналогичный предложенному на сайте OOoAuthors (см. 11). Я помещаю текстовый курсор в текстовую таблицу и затем выполняю макрос из 8.2.2.1. Во-первых, этот макрос запрещает вертикальные линии между строками и разрешает все остальное. Далее, все ячейки перебираются способом, показанным в 8.2.1.1. Цвет фона каждой ячейки устанавливается в зависимости от позиции ячейки в таблице. Наконец, для каждой ячейки таблицы извлекается текстовый объект и перебираются параграфы, причем устанавливается стиль параграфа.

Листинг 8.2.2.1: Форматировать текстовую таблицу, как указано на сайте OOoAuthors.

Sub Main

FormatTable()

End Sub

Sub FormatTable(Optional oUseTable)

Dim oTable

Dim oCell

Dim nRow As Long

Dim nCol As Long

If IsMissing(oUseTable) Then

oTable = ThisComponent.CurrentController.getViewCursor().TextTable

Else

oTable = oUseTable

End If

If IsNull(oTable) OR IsEmpty(oTable) Then

Print "Форматирование таблицы: Не указана таблица"

Exit Sub

End If

Dim v

Dim x

v = oTable.TableBorder

x = v.TopLine : x.OuterLineWidth = 2 : v.TopLine = x

x = v.LeftLine : x.OuterLineWidth = 2 : v.LeftLine = x

x = v.RightLine : x.OuterLineWidth = 2 : v.RightLine = x

x = v.TopLine : x.OuterLineWidth = 2 : v.TopLine = x

x = v.VerticalLine : x.OuterLineWidth = 2 : v.VerticalLine = x

x = v.HorizontalLine : x.OuterLineWidth = 0 : v.HorizontalLine = x

x = v.BottomLine : x.OuterLineWidth = 2 : v.BottomLine = x

oTable.TableBorder = v

For nRow = 0 To oTable.getRows().getCount() - 1

For nCol = 0 To oTable.getColumns().getCount() - 1

oCell = oTable.getCellByPosition(nCol, nRow)

If nRow = 0 Then

oCell.BackColor = 128

SetParStyle(oCell.getText(), "OOoTableHeader")

Else

SetParStyle(oCell.getText(), "OOoTableText")

If nRow MOD 2 = 1 Then

oCell.BackColor = -1

Else

REM color is (230, 230, 230)

oCell.BackColor = 15132390

End If

End If

Next

Next

End Sub

Sub SetParStyle(oText, sParStyle As String)

Dim oEnum

Dim oPar

oEnum = oText.createEnumeration()

Do While oEnum.hasMoreElements()

oPar = oEnum.nextElement()

If opar.supportsService("com.sun.star.text.Paragraph") Then

'oPar.ParaConditionalStyleName = sParStyle

oPar.ParaStyleName = sParStyle

End If

Loop

End Sub

Макрос в 8.2.2.1 предполагает, что таблица простая. Если ячейка соедржит текстовые таблицы, фреймы или секции, то они просто игнорируются. Когда будете писать свой макрос, Вам нужно будет решить, насколько гибким и универсальным будет Ваш макрос. Мои предположения сделаны для моих целей. Я знаю, что я буду использовать этот макрос только для простых текстовых таблиц, поэтому мой мкрос сравнительно простой и короткий.

Если у Вас есть стиль автоформата текстовых таблиц, то отформатировать таблицу еще проще. Объект текстовой таблицы поддерживает метод autoFormat(имя), который принимает имя формата (стиля) в качестве аргумента. One might argue that the macro in

2.2 Таблицы в текстовых документах

В Word имеются мощные средства для работы с таблицами. Ячейки таблицы могут содержать текст, числа, рисунки, формулы и т.д.

Чтобы создать в текстовом редакторе Word 2003 таблицу, надо выполнить команду Таблица/Вставить/Таблица (в появившемся окне надо указать количество строк и столбцов). Можно воспользоваться также кнопкой Вставить таблицу на панели Стандартная. Появится группа квадратов, представляющих собой ячейки таблицы. С помощью мыши надо выделить сетку нужной размерности.

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

В текстовом редакторе Word 2007 для вставки таблицы используют вкладку Вставка/Таблица. После установки курсора в одну из ячеек таблицы на ленте инструментов автоматически появится набор настроек внешнего вида таблицы, в виде двух дополнительных вкладок

Конструктор и Макет.

Модификация таблицы. В таблице можно добавлять, перемещать и удалять строки или столбцы, а также изменять их ширину и высоту, объединять и разбивать ячейки таблицы, Все эти команды находятся в менюТаблица. Кроме этого можно использовать и команды контекстного меню. Самый простой способизменения ширины столбца и высоты строки – перетащить мышью граничный маркер на линейке. Для обрамления таблицы используется кнопкаВнешние границына панелиФорматирование. Можно менять направление текста в ячейке, выполнив командуНаправление текстаиз контекстного меню.

Вычисления. С числовыми данными, приведенными в таблице, могут производиться расчеты по различным формулам, например вычисление сумм или среднего арифметического значения. Для вставки формулы надо выполнить команду Таблица/Формула. При этом курсор должен находиться в той ячейке, где будет вводиться формула. В открывшемся окне следует выбрать функцию из списка Вставить функцию и указать интервал ячеек. Имена ячеек, так же как и в электронных таблицах, состоят из букв латинского алфавита (начиная с А) и цифр (начиная с 1). Нумерация идет слева направо и сверху вниз.

Сортировка. Word позволяет сортировать любой столбец таблицы, или несколько столбцов вместе. Для сортировки курсор устанавливается в таблице и выполняется команда Таблица/Сортировка. В открывшемся окне должна быть включена опция Без строки заголовка, чтобы исключить участие заголовков в сортировке.

Фиксирование шапки таблицы. Если таблица состоит из нескольких страниц, то нет необходимости шапку таблицы набирать на каждом листе заново. Нужно выделить шапку таблицы на первом листе и выполнить Таблица/Заголовки. Как только таблица перейдет на вторую страницу, там автоматически появится шапка таблицы.

2.3 Работа с рисунками. Художественное оформление текстов

Вставка рисунка. В текст можно вставить файл с рисунком используя команду Вставка/Рисунок/Из файла… В появившемся окне следует выбрать нужный файл, включить режим Просмотр (открывается при нажатии кнопки Представление), просмотреть рисунок и нажать клавишу ввода.

Инструменты панели Рисованиетакже позволяют создать графическое изображение с помощью графических примитивов (линия, прямоугольник, окружность) либо с использованием коллекции автофигур (фигурные стрелки, элементы блок-схем и пр.)

Редактирование рисунка. Для редактирования фигуры ее необходимо выделить, щелкнув по ней мышью. Затем можно менять расположение и размеры, используя маркеры.

Если изображение состоит из отдельных частей, то для выделения нескольких частей следует нажать кнопку Выбор объектов на панели Рисование и выделить прямоугольную область с несколькими фигурами. Можно выделять фигуры, щелкая по ним мышью с нажатой клавишей Shift.

Команда Рисование/Порядок позволяет поменять порядок фигур на рисунке. Команда Рисование/Повернуть/отразить позволяет повернуть фигуру или получить ее зеркальное отображение, отразив вертикально или горизонтально.

При вставке рисунка в текст удобно воспользоваться командой Рисование/Обтекание текстом. Для выравнивания нескольких фигур относительно краев или центра рисунка, их необходимо выделить и воспользоваться командой Рисование/Выровнять/распределить.

Чтобы поместить текст на рисунке можно воспользоваться кнопкой Надпись на панели Рисование. Для размещения текста внутри фигуры нужно в контекстном меню рисунка выбрать команду Вставить текст.

После того, как рисунок скомпонован из различных фигур, его можно сгруппировать. Для этого надо выделить все фигуры и выполнить команду Рисование/Группировать. При необходимости рисунок опять может быть разгруппирован.

Создание диаграмм и организационных диаграмм. Чтобы построить диаграммы, подобные диаграммам Excel, нужно выполнить команду Вставка/Рисунок/Диаграмма. На экране появится таблица-образец и соответствующая ей диаграмма, а также панель инструментов Графика. В каждую ячейку таблицы надо ввести свою информацию, которая отразится в построенной по таблице диаграмме.

Для создания организационной диаграммы необходимо выполнить команду Вставка/Рисунок/Организационная диаграмма. Word создаст базовую диаграмму, в которую можно ввести текст и добавить необходимые фигуры.

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

Для изменения структуры диаграммы нужно щелкнуть по кнопке Макет панели инструментов и выбрать подходящую структуру. Изменение стиля диаграммы (По умолчанию, Контур, Тень, Огонь и т.д.) осуществляется с использование кнопки Автоформат панели инструментов. Для выбора вида схемы диаграммы следует вывести на экран панель инструментов Рисование, щелкнуть по кнопке Добавить диаграмму или организационную диаграмму этой панели. На экране появится окно, в котором надо выбрать вид схемы.

Для добавления рисунков, диаграмм, организационных диаграмм, фигур и клипов в текстовом редакторе Word 2007 используют на вкладкеВставкагруппуИллюстрации.

Сложные текстовые эффекты. Для создания фигурного текста, эмблем, логотипов и заголовков используется Мастер текста (Word Art). Для работы с ним служит кнопка Добавить объект WordArt на панели Рисование, либо командаВставка/Рисунок/Объект WordArt….

На экране появляется коллекция форм с различными эффектами. Необходимо выбрать одну из них и ввести необходимый текст, задав предварительно нужный тип и размер шрифта.

Для редактирования объекта WordArt надо выделить его, после чего появится панель инструментов WordArt, с помощью которой можно добавить объем, сделать текстурные заливки и другие специальные эффекты.

Вставка надписи. Чтобы оформить отдельные участки текста (изменить направление текста, отформатировать его независимо от основного и т. п.) используют Вставка/Надпись.

При вставке надписи или других графических объектов вокруг них размещается полотно. Если нужно убрать полотно, то следует выполнить Сервис/Параметры и на вкладке Общие снять флажок Автоматически создавать полотно при вставке автофигур.

Для изменения ориентации текста в надписи надо выделить его и выполнить Формат/Направление текста.

Буквица. Первую букву абзаца часто оформляют в виде буквицы. Для этого надо выделить эту букву, выполнить команду Формат/Буквица, и в диалоговом окне задать желаемый режим оформления буквицы (эффект Буквицы виден в режиме Разметки страницы).

В текстовом редакторе Word 2007 для вставки Надписи, Буквицы, объекта WordArt служит набор инструментов на вкладке Вставка группы Текст.

Символы. В документ можно вставлять различные символы, используя диалоговое окно Символ, которое предлагает большой набор специальных символов для разных шрифтов: Для их вставки используют меню Вставка/Символ

Создание текстовой таблицы

Следующий макрос демонстрирует обработку текстовых таблиц и содержащихся в них ячеек

Листинг 8.11.1: Создать текстовую таблицу и вставить в нее ячейки

'Author: Hermann Kienlein

'Author: Christian Junker

Sub easyUse( )

Dim odoc, otext, ocursor, mytable, tablecursor

odoc = thisComponent

otext = odoc.getText()

mytable = CreateTable(odoc)

'Создаем нормальный текстовый курсор TextCursor

ocursor = otext.CreateTextCursor()

ocursor.gotoStart(false)

'теперь определен интервал, равный позиции в таблице, давайте вставим его (now that we defined the range = position of the table, let's insert it)

otext.insertTextContent(ocursor, myTable, false )

tablecursor = myTable.createCursorByCellName("A1")

InsertNextItem("first cell", tablecursor, mytable) 'Вставляем новый элемент:

InsertNextItem("second cell", tablecursor, mytable) 'и еще один:

End Sub

Sub InsertNextItem(what, oCursor, oTable)

Dim oCell As Object

'задаем имя интервала ячеек, которые выделены данным курсором

sName = oCursor.getRangeName()

' имя ячейку будет что-то вроде D3

oCelle = oTable.getCellByName(sName)

oCelle.String = what

oCursor.goRight(1,FALSE)

End Sub

Function CreateTable(document) As Object

oTextTable = document.createInstance("com.sun.star.text.TextTable")

oTextTable.initialize(5, 8)

oTextTable.HoriOrient = 0 'com.sun.star.text.HoriOrientation::NONE

oTextTable.LeftMargin = 2000

oTextTable.RightMargin = 1500

CreateTable = oTextTable

End Function

Sub deleteTables()

'Иногда удаление таблиц в GUI кажется видом глупости,

'но все же эта процедура удалит все таблицы

Dim enum, textobject

enum = thisComponent.Text.createEnumeration

While enum.hasMoreElements()

txtcontent = enum.nextElement()

If txtcontent.supportsService("com.sun.star.text.TextTable") Then

thisComponent.Text.removetextcontent(txtcontent)

End If

Wend

End Sub

    1. Таблица без рамок границы (borders)

Lalaimia Samia <[email protected]> спрашивала меня, как вставить таблицу в документ, который не содержит границ (borders). Нельзя обрабатывать границы таблицы до тех пор, пока оне не будет вставлена. Следующая проблема в том, что каждое из свойств является структурой, поэтому невозможно напрямую изменять структуру, потому что фактически Вы работаете с ее копией. Ответом будет скопировать структуру во временную переменную, модифицировать эту переменную, а затем скопировать эту временную переменную обратно. Это скучновато, но просто.

Листинг 8.12.1: Вставить текстовую таблицу без рамок границы.

Sub InsertATableWithNoBorders

Dim oTable 'Новая таблица для вставки

Dim oEnd

REM Пусть документ создаст текстовую таблицу

oTable = ThisComponent.createInstance( "com.sun.star.text.TextTable" )

oTable.initialize(4, 1) 'четыре строки, один столбец

REM Теперь вставляем текстовую таблицу в конец документа

Oend = ThisComponent.Text.getEnd()

ThisComponent.Text.insertTextContent(oEnd, oTable, False)

Dim x 'представляет каждый экземпляр BorderLine

Dim v 'представляет объект рамок границ таблицы TableBorder в целом

v = oTable.TableBorder

x = v.TopLine : x.OuterLineWidth = 0 : v.TopLine = x

x = v.LeftLine : x.OuterLineWidth = 0 : v.LeftLine = x

x = v.RightLine : x.OuterLineWidth = 0 : v.RightLine = x

x = v.TopLine : x.OuterLineWidth = 0 : v.TopLine = x

x = v.VerticalLine : x.OuterLineWidth = 0 : v.VerticalLine = x

x = v.HorizontalLine : x.OuterLineWidth = 0 : v.HorizontalLine = x

x = v.BottomLine : x.OuterLineWidth = 0 : v.BottomLine = x

oTable.TableBorder = v

Dim a()

a() = Array(Array("Files"), Array("One"), Array("Two"), Array("Three"))

oTable.setDataArray(a())

End Sub

Как убрать таблицу в тексте word

Иногда у нас есть таблицы, из которых мы хотим извлечь текст, оставляя организацию по столбцам без изменений. В других случаях нам может потребоваться сделать противоположный шаг, чтобы преобразовать форматированный текст в таблицу. Сегодня мы увидим, как Word 2016 позволяет вам это делать.

Чтобы преобразовать таблицу в форматированный текст, выберите всю таблицу или часть таблицы для преобразования. Затем мы открываем вкладку «Макет» инструмента «Таблица» и нажимаем кнопку «Преобразовать в текст». 

Как преобразовать таблицу в текст в вордеКак преобразовать таблицу в текст в ворде

В следующем окне мы выбираем, какой символ будет представлять собой разделение между элементами таблицы.

Как преобразовать таблицу в текст в вордеКак преобразовать таблицу в текст в ворде

Преобразовать текст в таблицу

И наоборот, если у нас есть текст, отформатированный в столбцах и строках, который мы хотим преобразовать в таблицу, выделите этот текст его и на вкладке «Вставка» нажимаем «Таблица» в выпадающем меню выбираем «преобразовать в таблицу». 

Как преобразовать таблицу в текст в вордеКак преобразовать таблицу в текст в ворде

В появившемся окне мы вводим количество столбцов и строк, символ, который разделяет элементы, и относительную или абсолютную ширину столбцов.

Как преобразовать таблицу в текст в вордеКак преобразовать таблицу в текст в ворде

На этом все.

Что такое сложная текстовая таблица

Сложная текстовая таблица - это таблица, не являющаяся простой. Точнее, сложная текстовая таблица содержит ячейки, которые разделены (между страницами) или объединены. Чтобы продемонстрировать сложную текстовую таблицу, начнем с 10 и выполним следующие операции для получения 12.

  1. Правый клик (нажатие правой клавиши мыши) на ячейке A2 и выбираем Ячейка - разбить - по горизонтали (Cell > Split > Horizontal). Ячейка A2 становится двумя ячейками, остальные ячейки не переименовываются. В этот момент API показывает, что имеются четыре строки и ноль столбцов.

  2. Правый клик на ячейке B2 и выбираем Ячейка - Разбить - по вертикали (Cell > Split > Vertical). Ячейка B2 становится двумя разными ячейками, B2 и C2. Ячейки справа от B2 также переименовываются.

Таблица 12. Сложная таблица после разделения ячеек

A1

B1

C1

D1

A2=>A2.1.1

B2=>B2

B2=>C2

C2=>D2

D2=>E2

A2=>A2.1.2

A3

B3

C3

D3

A4

B4

C4

D4

  1. Выделить ячейки A3 и B3, правый клик и выбрать Ячейка - Объединить (Cell > Merge). Заметьте, что эти две ячейки A3 и B3 теперь называются A3. Ячейки C3 и D3 также переименовываются.

Table 13. Сложная таблица после объединения ячеек в одной строке.

A1

B1

C1

D1

A2=>A2.1.1

B2=>B2

B2=>C2

C2=>D2

D2=>E2

A2=>A2.1.2

A3, B3=>A3

C3=>B3

D3=>C3

A4

B4

C4

D4

  1. Выделить ячейки C3=>B3 и C4, правый клик и выбрать Ячейка - Объединить (Cell > Merge).

Table 14. Сложная таблица после объединения ячеек в одном столбце

A1

B1

C1

D1

A2=>A2.1.1

B2=>B2

B2=>C2

C2=>D2

D2=>E2

A2=>A2.1.2

A3, B3=>A3=>A3.1.1

(C3=>B3),C4=>B3

D3=>C3=>C3.1.1

A4=>A3.1.2

B4=>A3.2.2

D4=>C3.1.2

Это последнее объединение вызвало все возможные виды хаоса. Заметьте, что ячейки A4 и B4 теперь именуются A3.1.2 и A3.2.2. Похожая вещь случилась с ячейками C3 и D4 из Table 13. После шага 4 API показывает, что имеются три строки и ноль столбцов.

TIP

Совет

Очевидно, текстовая таблица не может иметь ноль столбцов, так что это может быть удобным способом быстро определить, является ли текстовая таблица простой. С другой стороны, это, вероятно, не документированное поведение и в будущем это может не срабоать.

      1. Перебор ячеек в любой текстовой таблице

В простой текстовой таблице можно использовать метод getCellByPosition(col, row) для извлечения ячейки, но это невозможно для сложной текстовой таблицы. Каждая текстовая таблица поддерживает метод getCellByName(), который возвращает ячейку на основе ее имени. Используйте метод getCellNames() для получения массива имен ячеек, содержащихся в таблице.

Листинг 8.2.4.1: Перебрать ячейки в любой текстовой таблице.

Dim sNames()

Dim i As Long

Dim s As String

Dim oTable

Dim oVC

Dim oCell

oVC = ThisComponent.getCurrentController().getViewCursor()

If IsEmpty(oVC.TextTable) Then

Print "Видимый курсор не в текстовой таблице"

Exit Sub

End If

oTable = oVC.TextTable

sNames() = oTable.getCellNames()

For i = LBound(sNames()) To UBound(sNames())

oCell = oTable.getCellByName(sNames(i))

s = s & sNames(i) & " = " & oCell.getString() & CHR$(10)

Next

MsgBox s

Хотя порядок, в котором извлекаются ячейки, не прост, но этот метод работает для всех типов текстовых таблиц. Можно легко получить список имен ячеек следующим образом:

MsgBox Join(oTable.getCellNames(), CHR$(10))

Извлечение данных из простой текстовой таблицы

Если нужно получить данные из текстовой таблицы, используйте методы getDataArray() и getData(), которые возвращают все данные таблицы в виде массива. Получение данных быстрее, чем перебор ячеек и затем извлечение данных из этих ячеек. Каждый метод извлечения данных имеет соответствующий метод установки значений данных, который может установить все данные за один раз.

Данные возвращаются в виде массива или массивов, а не в двумерном массиве. Следующий макрос выводит все числовые данные в первой строке таблицы.

Dim oData() : oData() = oTable.getDataArray()

MsgBox Join(oData(0), CHR$(10))

Предположим, что текстовая таблица содержит две строки и три столбца, тогда следующий код установит значения данных в этой таблице.

Otable.setData(Array(Array(0, 1, 2), Array(3, 4, 5))

Используйте getData() и setData() для установки числовых данных. Предполагается, что все элементы (entries) - числа с двойной точностью Текстовые данные преобразуются в нули.

Tip

Совет

Ячейка считается содержащей числовые данные в том и только том случае, если ячейка отформатирована как число.

Используйте getDataArray() и setDataArray() для установки значений данных, которые содержат строки. В версии 2.01 строковые данные не извлекаются и не устанавливются, но этот способ уже обещан (an issue has been filed).

    1. Курсоры таблицы и интервалы ячеек

Текстовые таблицы поддерживают метод createCursorByCellName(). Курсоры таблиц могут быть передвинуты и установлены аналогично их родственникам (counter-parts) - текстовым курсорам. Можно также использовать курсор таблицы для разделения и объединения ячеек. Видимый курсор действует как и курсор таблицы, если он находится внутри текстовой таблицы, и поэтому может использоваться для копирования текстовой таблицы или интервала ячеек в новую текстовую таблицу (см. мою книгу OpenOffice.org Macros Explained страницы 309 – 311).

    1. Интервалы ячеек (Cell ranges)

Большинство возможностей текстовой таблицы также поддерживается интервалом ячеек. Другими словами, если можно что-то сделать с объектом таблицы, то обычно это можно сделать и с объектом интервала ячеек. Например, можно извлечь и установить функции данных (data functions) на интервале ячеек. Можно отсортировать интервал ячеек и можно извлечь отдельную ячейку из интервала ячеек.

Используйте методы getCellRangeByPosition() и getCellRangeByName() для извлечения интервала ячеек из текстовой таблицы. Курсор таблицы может также выделить интревал ячеек, но курсор таблицы не является интервалом ячеек. Курсор таблицы поддерживает метод getRangeName() (получить имя интервала), который может поэтому использоваться для извлечения этого интервала ячеек.

      1. Использование интервала ячеек для очистки ячеек

В документе OOo Calc интервал ячеек поддерживает метод очистки ячейки; интервал ячеек из текстовой таблицы не поддерживает. Можно обойти это следующим способом:

Листинг 8.5.1.1:Очистка данных текстовой таблицы.

Sub ClearCells()

Dim oTable

Dim oRange

Dim oData()

Dim oRow()

Dim i%, j%

REM Получить ПЕРВУЮ текстовую таблицу

oTable = ThisComponent.getTextTables().getByIndex(0)

oRange = oTable.getCellRangeByName("B1:D4")

oData() = oRange.getDataArray()

For i = LBound(oData()) To UBound(oData())

oRow() = oData(i)

For j = LBound(oRow()) To UBound(oRow())

oRow(j) = ""

Next

Next

oRange.setDataArray(oData())

End Sub

Я не пытался сделать этот код более эффективным.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *