Меню

Как добавить таблицы в текстовые документы Open XML SDK

Wordprocessing Tables

Table-wide properties are specified in . Each property is a child element of , and they affect all rows and cells in the table, though they can be overridden by table-level exception, row-level, and cell-level properties.

The most commonly used properties are shown below:

Elements/Properties:

Specifies the style ID of the table style if a table style is to be used to format the table. See Defining a Style — Table Styles. Table styles are applied after document default styles, so they override the defaults, but all other style types are applied after the table styles, so they override the table style. In the sample below, a table style is referenced, but there is also direct formatting applied for the table justification.

This element is applicable to a within a table style. Tables styles can have conditional formatting which enables columns and/or rows to be «banded» by applying different formatting to alternating columns or rows. Typically every other column is formatted the same. So, for example, odd columns may have gray shading and even columns may have green shading. This element can be used to group columns so that alternating groups of columns are formatted the same way rather than every other column. For example, by setting the value of the val attribute to 3 , the first three columns will be formatted the same, and the second group of three will be formatted the same, and each group of three thereafter will alternate their formatting. See Table Styles — Conditional Formatting.

This element is applicable to a within a table style. Tables styles can have conditional formatting which enables columns and/or rows to be «banded» by applying different formatting to alternating columns or rows. Typically every other row is formatted the same. So, for example, odd rows may have gray shading and even rows may have green shading. This element can be used to group rows so that alternating groups of rows are formatted the same way rather than every other row. For example, by setting the value of the val attribute to 3 , the first three rows will be formatted the same, and the second group of three will be formatted the same, and each group of three thereafter will alternate their formatting. See Table Styles — Conditional Formatting.

Источник

Как добавить таблицы в текстовые документы (Open XML SDK)

Настоящая документация является предварительной и может быть изменена. В этом разделе показан порядок использования классов пакета Пакет Open XML SDK 2.5 для Office для программного добавления таблицы в текстовый документ. Для иллюстрации данной задачи в разделе приведен пример метода AddTable.

Чтобы использовать пример кода в этом разделе, необходимо установить SDK Open XML 2.0. Необходимо явно ссылаться на следующие сборки в проекте:

DocumentFormat.OpenXml (устанавливается вместе с пакетом Open XML SDK).

Для компиляции кода, представленного в этом разделе, необходимо также использовать следующие директивы using или инструкции Imports:

Метод AddTable

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

Имя изменяемого документа (строковое значение).

Двумерных массив строк, вставляемый в документ в виде таблицы.

Вызов метода AddTable

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

Как работает код

Сначала приведенный ниже код открывает документ, используя метод WordprocessingDocument.Open и указывая, что документ должен быть открыт для чтения и записи (значение последнего параметра true). Затем код получает ссылку на корневой элемент части основного документа при помощи свойства Document и свойства MainDocumentPart текстового документа.

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

Прежде чем вставить в документ таблицу, необходимо создать объект Table и настроить его свойства. Чтобы задать свойства таблицы, необходимо создать и заполнить значениями объект TableProperties. Класс TableProperties предоставляет множество свойств, применимых к таблицам, например Shading, TableBorders, TableCaption, TableCellSpacing, TableJustification и т. д. Пример метода включает следующий код:

Читайте также:  Волейбол супер лига таблица

Конструктор класса TableProperties позволяет указать необходимое количество дочерних элементов (подобно конструктору XElement). В этом случае код создает дочерние элементы TopBorder, BottomBorder, LeftBorder, RightBorder, InsideHorizontalBorder и InsideVerticalBorder, каждый из которых описывает один из граничных элементов таблицы. Для каждого элемента код задает свойства Val и Size в составе вызова конструктора. Вы можете с легкостью задать размер, но настройка свойства Val требует несколько больших усилий: это свойство для данного конкретного объекта представляет стиль границы, и ему необходимо присвоить перечислимое значение. Для этого необходимо создать экземпляр универсального типа EnumValue , передавая конструктору в качестве параметра определенный тип границы (Single). После установки всех необходимых границ таблицы код вызывает метод AppendChild таблицы, указывая, что универсальным типом является TableProperties. Таким образом, он добавляет экземпляр класса TableProperties, используя переменную props в качестве значения.

Заполнение таблицы данными

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

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

Затем код выполняет следующие действия:

создает объект Text, содержащий значение из массива строк;

передает объект Text в конструктор нового объектаRun;

передает объект Run в конструктор нового объектаParagraph;

передает объект Paragraph в метод Append ячейки.

Другими словами, следующий код добавляет текст в новый объект TableCell:

Затем код добавляет в ячейку новый объект TableCellProperties. Этот объект TableCellProperties, подобно уже описанному объекту TableProperties, может принимать в конструкторе любое необходимое число объектов. В этом случае код передает только один новый объект TableCellWidth со свойством Type, имеющим значение Auto (чтобы таблица автоматически изменяла ширину столбцов).

Завершение работы

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

Пример кода

Далее приведен полный пример кода AddTable на языках C# и Visual Basic.

Источник



Как вставить таблицу в текстовый документ (Open XML SDK)

Настоящая документация является предварительной и может быть изменена. В этой статье показано, как использовать классы в пакете Пакет Open XML SDK 2.5 для Office для вставки таблицы в текстовый документ программными средствами.

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

Получение объекта WordprocessingDocument

Чтобы открыть существующий документ, необходимо создать экземпляр класса WordprocessingDocument, как показано в следующей инструкции using. В той же инструкции откройте файл текстового документа, указав путь к файлу в методе Open и установив для логического параметра значение true, чтобы разрешить изменение документа.

Инструкцию using рекомендуется использовать вместо традиционной последовательности .Create, .Save, .Close. Это позволяет обеспечить автоматический вызов метода Dispose (внутреннего метода, используемого пакетом SDK Open XML для очистки ресурсов) при достижении закрывающей скобки. Блок, следующий за инструкцией using, создает область для объекта, создаваемого или именуемого в инструкции using, в данном случае doc. Так как класс WordprocessingDocument в пакете SDK Open XML автоматически сохраняет и закрывает объект как часть реализации System.IDisposable, а также поскольку метод Dispose вызывается автоматически при выходе из блока, не нужно явно вызывать методы Save и Close, если используется инструкция using.

Структура таблицы

Базовая структура документа WordProcessingML состоит из элементов document и body. За ними следуют один или более элементов уровня блока, таких как p, который представляет абзац. Абзац содержит один или несколько элементов r. Элемент r означает пробег, область текста с общим набором свойств, таких как форматирование. Пробег состоит из одного или нескольких элементов t. Элемент t содержит текстовый диапазон. В этом примере документ должен содержать таблицу. Таблица представляет собой набор абзацев (и другого содержимого на уровне блоков), распределенных по строкам и столбцам. Таблицы в документе WordprocessingML определяются с помощью элемента tbl, аналогичного HTML-тегу таблицы. Рассмотрим пустую таблицу с одной ячейкой (то есть с одной строкой и одним столбцом) и границей толщиной в 1 точку со всех сторон. Эта таблица представлена следующим сегментом разметки WordprocessingML.

Читайте также:  Минус 60 таблица совмещения продуктов

Для этой таблицы задаются следующие свойства: ширина, составляющая 100 % от ширины страницы (элемент tblW), набор границ таблицы (элемент tblBorders), сетка таблицы, определяющая набор общих вертикальных границ внутри таблицы (элемент tblGrid) и единственная строка таблицы (элемент tr).

Как работает пример кода

В примере кода после открытия документа в операторе using создается новый объект Table. Затем создается объект TableProperties и задаются данные о его границе. Класс TableProperties содержит перегруженный конструктор TableProperties(), принимающий массив params типа OpenXmlElement. В коде этот конструктор используется для создания экземпляра объекта TableProperties с объектами BorderType для каждой границы. При этом создается экземпляр каждого из объектов BorderType и задается их значение с помощью инициализаторов объектов. После создания экземпляра добавьте объект TableProperties в таблицу.

Код создает строку таблицы. В этом разделе кода применяются перегруженные методы Append[]), классы которых являются производными от наследника OpenXmlElement. Методы Append позволяют добавить один элемент или часть дерева XML в конец списка дочерних элементов под указанным родительским элементом. Затем код создает объект TableCell, который представляет отдельную ячейку таблицы, и задает свойство ширины ячейки таблицы с помощью объекта TableCellProperties, а также содержимое ячейки («Hello, World!») с помощью объекта Text. В схеме Open XML Wordprocessing элемент абзаца (

) содержит элементы пробега ( ), которые, в свою очередь, содержат элементы текста ( ). Чтобы вставить текст в ячейку таблицы, используя API, нужно создать объект Paragraph, который содержит объект Run, включающий объект Text с текстом, который нужно вставить в ячейку. Затем объект Paragraph добавляется к объекту TableCell. При этом создается нужная структура XML для вставки текста в ячейку. После этого TableCell добавляется к объекту TableRow.

Затем в коде создается вторая ячейка таблицы. В последнем разделе кода создается еще одна ячейка таблицы с помощью перегруженного конструктора TableCell, TableCell(String), который принимает свойство OuterXml существующего объекта TableCell в качестве единственного аргумента. После создания второй ячейки код добавляет объект TableCell к TableRow, TableRow — к Table, а Table — к объекту Document.

Пример кода

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

После запуска программы откройте файл «Word10.docx» и проверьте, вставлена ли таблица.

Ниже представлен полный пример кода на языках C# и Visual Basic.

Источник

Open xml word таблица

Change text in a table in a word processing document (Open XML SDK)

This topic shows how to use the Open XML SDK 2.5 for Office to programmatically change text in a table in an existing word processing document.

The following assembly directives are required to compile the code in this topic.

Open the Existing Document

To open an existing document, instantiate the WordprocessingDocument** class as shown in the following using statement. In the same statement, open the word processing file at the specified filepath by using the Open** method, with the Boolean parameter set to true to enable editing the document.

The using statement provides a recommended alternative to the typical .Open, .Save, .Close sequence. It ensures that the Dispose method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the using statement establishes a scope for the object that is created or named in the using statement, in this case doc. Because the WordprocessingDocument class in the Open XML SDK automatically saves and closes the object as part of its System.IDisposable implementation, and because Dispose is automatically called when you exit the block, you do not have to explicitly call Save and Close─as long as you use using.

Читайте также:  Для чего нужна таблица растворимости кислот

The Structure of a Table

The basic document structure of a WordProcessingML document consists of the document and body elements, followed by one or more block level elements such as p, which represents a paragraph. A paragraph contains one or more r elements. The r stands for run, which is a region of text with a common set of properties, such as formatting. A run contains one or more t elements. The t element contains a range of text.

The document might contain a table as in this example. A table is a set of paragraphs (and other block-level content) arranged in rows and columns. Tables in WordprocessingML are defined via the tbl element, which is analogous to the HTML table tag. Consider an empty one-cell table (that is, a table with one row and one column) and 1 point borders on all sides. This table is represented by the following WordprocessingML code example.

This table specifies table-wide properties of 100% of page width using the tblW element, a set of table borders using the tblBorders element, the table grid, which defines a set of shared vertical edges within the table using the tblGrid element, and a single table row using the tr element.

How the Sample Code Works

In the sample code, after you open the document in the using statement, you locate the first table in the document. Then you locate the second row in the table by finding the row whose index is 1. Next, you locate the third cell in that row whose index is 2, as shown in the following code example.

After you have located the target cell, you locate the first run in the first paragraph of the cell and replace the text with the passed in text. The following code example shows these actions.

().First(); t.Text = txt; «>

Change Text in a Cell in a Table

The following code example shows how to change the text in the specified table cell in a word processing document. The code example expects that the document, whose file name and path are passed as an argument to the ChangeTextInCell method, contains a table. The code example also expects that the table has at least two rows and three columns, and that the table contains text in the cell that is located at the second row and the third column position. When you call the ChangeTextInCell method in your program, the text in the cell at the specified location will be replaced by the text that you pass in as the second argument to the ChangeTextInCell method. In the following table the text «The text from the API example» was used.

Some text Some text Some text
Some text Some text The text from the API example

The ChangeTextinCell method changes the text in the second row and the third column of the first table found in the file. You call it by passing a full path to the file as the first parameter, and the text to use as the second parameter. For example, the following call to the ChangeTextInCell method changes the text in the specified cell to «The text from the API example.»

Источник