Office.Binding interface

Представляет привязку к разделу документа.

Объект Binding предоставляет функциональные возможности, которыми обладают все привязки, независимо от типа.

Объект Binding никогда не вызывается напрямую. Это абстрактный родительский класс объектов, представляющих каждый тип привязки: Office.MatrixBinding, Office.TableBinding и Office.TextBinding. Все эти три объекта наследуют от объекта Binding методы getDataAsync и setDataAsync, которые позволяют взаимодействовать с данными в привязке. Они также наследуют свойства идентификатора и типа для запроса значений этих свойств. Кроме того, объекты MatrixBinding и TableBinding предоставляют дополнительные методы для работы с матрицами и таблицами, например, для подсчета количества строк и столбцов.

Комментарии

Приложения: Word, Excel (устарело, использовать Excel.Binding)

Наборы требований:

Используется

Свойства

document

Получить объект Document, связанный с привязкой.

id

Строка, однозначно определяющая эту привязку среди привязок в том же объекте Office.Document .

type

Получает тип привязки.

Методы

addHandlerAsync(eventType, handler, options, callback)

Добавляет обработчик событий в объект для указанного Office.EventType. Поддерживаемые типы событий: Office.EventType.BindingDataChanged и Office.EventType.BindingSelectionChanged.

addHandlerAsync(eventType, handler, callback)

Добавляет обработчик событий в объект для указанного Office.EventType. Поддерживаемые типы событий: Office.EventType.BindingDataChanged и Office.EventType.BindingSelectionChanged.

getDataAsync(options, callback)

Возвращает данные, содержащиеся в привязке.

getDataAsync(callback)

Возвращает данные, содержащиеся в привязке.

removeHandlerAsync(eventType, options, callback)

Удаляет указанный обработчик из привязки для указанного типа события.

removeHandlerAsync(eventType, callback)

Удаляет указанный обработчик из привязки для указанного типа события.

setDataAsync(data, options, callback)

Записывает данные в привязанный раздел документа, представленный указанным объектом привязки.

setDataAsync(data, callback)

Записывает данные в привязанный раздел документа, представленный указанным объектом привязки.

Сведения о свойстве

document

Получить объект Document, связанный с привязкой.

document: Office.Document;

Значение свойства

Примеры

Office.context.document.bindings.getByIdAsync("myBinding", function (asyncResult) {
    write(asyncResult.value.document.url);
});

// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

id

Строка, однозначно определяющая эту привязку среди привязок в том же объекте Office.Document .

id: string;

Значение свойства

string

Примеры

Office.context.document.bindings.getByIdAsync("myBinding", function (asyncResult) {
    write(asyncResult.value.id);
});

// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

type

Получает тип привязки.

type: Office.BindingType;

Значение свойства

Примеры

Office.context.document.bindings.getByIdAsync("MyBinding", function (asyncResult) { 
    write(asyncResult.value.type); 
}) 

// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

Сведения о методе

addHandlerAsync(eventType, handler, options, callback)

Добавляет обработчик событий в объект для указанного Office.EventType. Поддерживаемые типы событий: Office.EventType.BindingDataChanged и Office.EventType.BindingSelectionChanged.

addHandlerAsync(eventType: Office.EventType, handler: any, options?: Office.AsyncContextOptions, callback?: (result: Office.AsyncResult<void>) => void): void;

Параметры

eventType
Office.EventType

Тип события. Для привязок это может быть Office.EventType.BindingDataChanged или Office.EventType.BindingSelectionChanged.

handler

any

Добавляемая функция обработчика событий, единственный параметр которой имеет тип Office.BindingDataChangedEventArgs или Office.BindingSelectionChangedEventArgs.

options
Office.AsyncContextOptions

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

callback

(result: Office.AsyncResult<void>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult.

Возвращаемое значение

void

Комментарии

Набор требований: BindingEvents

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

addHandlerAsync(eventType, handler, callback)

Добавляет обработчик событий в объект для указанного Office.EventType. Поддерживаемые типы событий: Office.EventType.BindingDataChanged и Office.EventType.BindingSelectionChanged.

addHandlerAsync(eventType: Office.EventType, handler: any, callback?: (result: Office.AsyncResult<void>) => void): void;

Параметры

eventType
Office.EventType

Тип события. Для привязок это может быть Office.EventType.BindingDataChanged или Office.EventType.BindingSelectionChanged.

handler

any

Добавляемая функция обработчика событий, единственный параметр которой имеет тип Office.BindingDataChangedEventArgs или Office.BindingSelectionChangedEventArgs.

callback

(result: Office.AsyncResult<void>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult.

Возвращаемое значение

void

Комментарии

Набор требований: BindingEvents

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

Примеры

// The following code sample calls the select function of the Office object to access the binding
// with ID "MyBinding", and then calls the addHandlerAsync method to add a handler function 
// for the bindingDataChanged event of that binding.
function addEventHandlerToBinding() {
    Office.select("bindings#MyBinding").addHandlerAsync(
        Office.EventType.BindingDataChanged, onBindingDataChanged);
}

function onBindingDataChanged(eventArgs) {
    write("Data has changed in binding: " + eventArgs.binding.id);
}

// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}
// To add an event handler for the BindingSelectionChanged event of a binding, 
// use the addHandlerAsync method of the Binding object.
// The event handler receives an argument of type BindingSelectionChangedEventArgs.
function addEventHandlerToBinding() {
    Office.select("bindings#MyBinding").addHandlerAsync(
        Office.EventType.BindingSelectionChanged, onBindingSelectionChanged);
}

function onBindingSelectionChanged(eventArgs) {
    write(eventArgs.binding.id + " has been selected.");
}
// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

getDataAsync(options, callback)

Возвращает данные, содержащиеся в привязке.

getDataAsync<T>(options?: GetBindingDataOptions, callback?: (result: AsyncResult<T>) => void): void;

Параметры

options
Office.GetBindingDataOptions

Предоставляет варианты получения данных в привязке.

callback

(result: Office.AsyncResult<T>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult. Свойством value результата являются значения в указанной привязке. coercionType Если параметр указан (и вызов выполнен успешно), данные возвращаются в формате, описанном в статье о перечислении CoercionType.

Возвращаемое значение

void

Комментарии

Наборы требований:

При вызове из MatrixBinding или TableBinding метод getDataAsync будет возвращать подмножество связанных значений, если указаны необязательные параметры startRow, startColumn, rowCount и columnCount (и они указывают непрерывный и допустимый диапазон).

getDataAsync(callback)

Возвращает данные, содержащиеся в привязке.

getDataAsync<T>(callback?: (result: AsyncResult<T>) => void): void;

Параметры

callback

(result: Office.AsyncResult<T>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult. Свойством value результата являются значения в указанной привязке. coercionType Если параметр указан (и вызов выполнен успешно), данные возвращаются в формате, описанном в статье о перечислении CoercionType.

Возвращаемое значение

void

Комментарии

Наборы требований:

При вызове из MatrixBinding или TableBinding метод getDataAsync будет возвращать подмножество связанных значений, если указаны необязательные параметры startRow, startColumn, rowCount и columnCount (и они указывают непрерывный и допустимый диапазон).

Примеры

function showBindingData() {
    Office.select("bindings#MyBinding").getDataAsync(function (asyncResult) {
        write(asyncResult.value)
    });
}

// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

// There is an important difference in behavior between using the "table" and "matrix" coercionType with the
// Binding.getDataAsync method, with respect to data formatted with header rows, as shown in the following
// two examples. These code examples show event handler functions for the Binding.SelectionChanged event.

// If you specify the "table" coercionType, the TableData.rows property ( result.value.rows in the following
// code example) returns an array that contains only the body rows of the table. So, its 0th row will be the
// first non-header row in the table.
function selectionChanged(evtArgs) { 
    Office.select("bindings#TableTranslate").getDataAsync(
        { coercionType: 'table', 
          startRow: evtArgs.startRow, 
          startCol: 0, 
          rowCount: 1, 
          columnCount: 1 },  
        function (result) { 
            if (result.status === Office.AsyncResultStatus.Succeeded) {
                write("Image to find: " + result.value.rows[0][0]); 
            } 
            else {
                write(result.error.message);
            }
    }); 
}
// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

// However, if you specify the "matrix" coercionType, result.value in the following code example returns an array
// that contains the table header in the 0th row. If the table header contains multiple rows, then these are all
// included in the result.value matrix as separate rows before the table body rows are included.
function selectionChanged(evtArgs) { 
    Office.select("bindings#TableTranslate").getDataAsync(
        { coercionType: 'matrix', 
          startRow: evtArgs.startRow, 
          startCol: 0, 
          rowCount: 1, 
          columnCount: 1 },  
        function (result) { 
            if (result.status === Office.AsyncResultStatus.Succeeded) {
                write("Image to find: " + result.value[1][0]); 
            } 
            else {
                write(result.error.message);
            }
    }); 
}
// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

removeHandlerAsync(eventType, options, callback)

Удаляет указанный обработчик из привязки для указанного типа события.

removeHandlerAsync(eventType: Office.EventType, options?: RemoveHandlerOptions, callback?: (result: AsyncResult<void>) => void): void;

Параметры

eventType
Office.EventType

Тип события. Для привязок это может быть Office.EventType.BindingDataChanged или Office.EventType.BindingSelectionChanged.

options
Office.RemoveHandlerOptions

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

callback

(result: Office.AsyncResult<void>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult.

Возвращаемое значение

void

Комментарии

Набор требований: BindingEvents

removeHandlerAsync(eventType, callback)

Удаляет указанный обработчик из привязки для указанного типа события.

removeHandlerAsync(eventType: Office.EventType, callback?: (result: AsyncResult<void>) => void): void;

Параметры

eventType
Office.EventType

Тип события. Для привязок это может быть Office.EventType.BindingDataChanged или Office.EventType.BindingSelectionChanged.

callback

(result: Office.AsyncResult<void>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult.

Возвращаемое значение

void

Комментарии

Набор требований: BindingEvents

Примеры

function removeEventHandlerFromBinding() {
    Office.select("bindings#MyBinding").removeHandlerAsync(
        Office.EventType.BindingDataChanged, {handler:onBindingDataChanged});
}

setDataAsync(data, options, callback)

Записывает данные в привязанный раздел документа, представленный указанным объектом привязки.

setDataAsync(data: TableData | any, options?: SetBindingDataOptions, callback?: (result: AsyncResult<void>) => void): void;

Параметры

data

Office.TableData | any

Данные, записываемые в текущий выделенный фрагмент. Типы данных, возможные для разных приложений Office:

строка: Excel в Интернете и Windows, а также Word в Интернете и только в Windows

массив массивов: только для Excel и Word

Office.TableData: только Excel и Word

HTML: только Word в Интернете и Windows

Office Open XML: только Word

options
Office.SetBindingDataOptions

Предоставляет варианты настройки данных в привязке.

callback

(result: Office.AsyncResult<void>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult.

Возвращаемое значение

void

Комментарии

Наборы требований:

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

значение data Записываемые данные
Строка Будет написан простой текст или все, что можно привязать к строке.
Массив массивов (матрица) Записываются табличные данные без заголовков. Например, чтобы записать данные в три строки двух столбцов, вы можете передать массив следующим образом: \[\["R1C1", "R1C2"\], \["R2C1", "R2C2"\], \["R3C1", "R3C2"\]\]. Чтобы записать один столбец из трех строк, передайте массив следующего вида: \[\["R1C1"\], \["R2C1"\], \["R3C1"\]\].
Объект TableData Записываются табличные данные с заголовками.

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

значение data Записываемые данные
Строка Записывается указанный текст.
Массив массивов ("матрица") или TableData объект Записывается таблица Word.
HTML Записывается указанный HTML-код. Если указанный HTML-код содержит недопустимые фрагменты, Word не вызовет ошибку. Word запишет весь допустимый HTML-код и пропустит недопустимые данные.
Office Open XML (Open XML) Записывается указанный XML-код.

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

значение data Записываемые данные
Строка Указанный текст добавляется в первую привязанную ячейку в качестве значения. Вы также можете указать допустимую формулу, чтобы добавить ее в привязанную ячейку. Например, если задать для параметра data значение "=SUM(A1:A5)", значения в указанном диапазоне будут суммироваться. Если задать формулу в связанной ячейке, добавленную (или существующую) формулу в этой ячейке будет невозможно считать. Если вызвать Binding.getDataAsync метод в связанной ячейке для чтения данных, метод может вернуть только данные, отображаемые в ячейке (результат формулы).
Массив массивов (матрица) и форма точно соответствует форме указанной привязки Набор строк и столбцов записывается. Можно также указать массив массивов, содержащих допустимые формулы, и добавить их в связанные ячейки. Например, при настройке значения \[\["=SUM(A1:A5)","=AVERAGE(A1:A5)"\]\] эти две формулы будут добавлены в привязку, содержащую две ячейки. Так же, как при задании формулы в одной связанной ячейке вы не сможете прочитать добавленные формулы (или любые уже существующие формулы) из привязки с Binding.getDataAsync методом — он возвращает только данные, отображаемые в связанных ячейках.
Объект TableData и форма таблицы соответствуют связанной таблице Записывается указанный набор строк или заголовков, если никакие другие данные в окружающих ячейках не перезаписываются. **Примечание**. Если указать формулы в TableData объекте, который передается для параметра *данные*, вы можете не получить ожидаемых результатов из-за функции Excel "вычисляемые столбцы", которая автоматически дублирует формулы в столбце. Чтобы избежать этого, если вы хотите записать *данные*, содержащие формулы в связанную таблицу, попробуйте указать данные как массив массивов (а TableData не как объект) и укажите *coercionType* как Microsoft.Office.Matrix или "matrix".

Excel в Интернете:

  • Общее количество ячеек в значении, передаваемом в параметр data, не может превышать 20 000 за один вызов этого метода.

  • Количество групп форматирования, передаваемых параметру cellFormat, не может превышать 100. Одна группа форматирования состоит из набора вариантов форматирования, применяемого к указанному диапазону ячеек.

Во всех остальных случаях возвращается ошибка.

Метод setDataAsync будет записывать данные в подмножество привязки таблицы или матрицы, если указаны необязательные параметры startRow и startColumn и указан допустимый диапазон.

В функции обратного вызова, переданной в метод setDataAsync, можно использовать свойства объекта AsyncResult, чтобы возвратить такие сведения:

Property Использовать
AsyncResult.value Всегда возвращается undefined , так как нет объекта или данных, которые можно было бы извлечь.
AsyncResult.status Определяет, удалось ли выполнить операцию.
AsyncResult.error Доступ к объекту Error, который предоставляет сведения об ошибке, если операция завершилась неудачно.
AsyncResult.asyncContext Определите элемент любого типа, возвращаемый в объекте AsyncResult без изменений.

setDataAsync(data, callback)

Записывает данные в привязанный раздел документа, представленный указанным объектом привязки.

setDataAsync(data: TableData | any, callback?: (result: AsyncResult<void>) => void): void;

Параметры

data

Office.TableData | any

Данные, записываемые в текущий выделенный фрагмент. Типы данных, возможные для разных приложений Office:

строка: Excel в Интернете и Windows, а также Word в Интернете и только в Windows

массив массивов: только для Excel и Word

TableData : только Excel и Word

HTML: только Word в Интернете и Windows

Office Open XML: только Word

callback

(result: Office.AsyncResult<void>) => void

Необязательный параметр. Функция, вызываемая при возврате обратного вызова, единственный параметр которой имеет тип Office.AsyncResult.

Возвращаемое значение

void

Комментарии

Наборы требований:

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

значение data Записываемые данные
Строка Будет написан простой текст или все, что можно привязать к строке.
Массив массивов (матрица) Записываются табличные данные без заголовков. Например, чтобы записать данные в три строки двух столбцов, вы можете передать массив следующим образом: \[\["R1C1", "R1C2"\], \["R2C1", "R2C2"\], \["R3C1", "R3C2"\]\]. Чтобы записать один столбец из трех строк, передайте массив следующего вида: \[\["R1C1"\], \["R2C1"\], \["R3C1"\]\].
Объект TableData Записываются табличные данные с заголовками.

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

значение data Записываемые данные
Строка Записывается указанный текст.
Массив массивов ("матрица") или TableData объект Записывается таблица Word.
HTML Записывается указанный HTML-код. Если указанный HTML-код содержит недопустимые фрагменты, Word не вызовет ошибку. Word запишет весь допустимый HTML-код и пропустит недопустимые данные.
Office Open XML (Open XML) Записывается указанный XML-код.

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

значение data Записываемые данные
Строка Указанный текст добавляется в первую привязанную ячейку в качестве значения. Вы также можете указать допустимую формулу, чтобы добавить ее в привязанную ячейку. Например, если задать для параметра data значение "=SUM(A1:A5)", значения в указанном диапазоне будут суммироваться. Если задать формулу в связанной ячейке, добавленную (или существующую) формулу в этой ячейке будет невозможно считать. Если вызвать Binding.getDataAsync метод в связанной ячейке для чтения данных, метод может вернуть только данные, отображаемые в ячейке (результат формулы).
Массив массивов (матрица) и форма точно соответствует форме указанной привязки Набор строк и столбцов записывается. Можно также указать массив массивов, содержащих допустимые формулы, и добавить их в связанные ячейки. Например, при настройке значения \[\["=SUM(A1:A5)","=AVERAGE(A1:A5)"\]\] эти две формулы будут добавлены в привязку, содержащую две ячейки. Так же, как при задании формулы в одной связанной ячейке вы не сможете прочитать добавленные формулы (или любые уже существующие формулы) из привязки с Binding.getDataAsync методом — он возвращает только данные, отображаемые в связанных ячейках.
Объект TableData и форма таблицы соответствуют связанной таблице Записывается указанный набор строк или заголовков, если никакие другие данные в окружающих ячейках не перезаписываются. **Примечание**. Если указать формулы в TableData объекте, который передается для параметра *данные*, вы можете не получить ожидаемых результатов из-за функции Excel "вычисляемые столбцы", которая автоматически дублирует формулы в столбце. Чтобы избежать этого, если вы хотите записать *данные*, содержащие формулы в связанную таблицу, попробуйте указать данные как массив массивов (а TableData не как объект) и укажите *coercionType* как Microsoft.Office.Matrix или "matrix".

Excel в Интернете:

  • Общее количество ячеек в значении, передаваемом в параметр data, не может превышать 20 000 за один вызов этого метода.

  • Количество групп форматирования, передаваемых параметру cellFormat, не может превышать 100. Одна группа форматирования состоит из набора вариантов форматирования, применяемого к указанному диапазону ячеек.

Во всех остальных случаях возвращается ошибка.

Метод setDataAsync будет записывать данные в подмножество привязки таблицы или матрицы, если указаны необязательные параметры startRow и startColumn и указан допустимый диапазон.

В функции обратного вызова, переданной в метод setDataAsync, можно использовать свойства объекта AsyncResult, чтобы возвратить такие сведения:

Property Использовать
AsyncResult.value Всегда возвращается undefined , так как нет объекта или данных, которые можно было бы извлечь.
AsyncResult.status Определяет, удалось ли выполнить операцию.
AsyncResult.error Доступ к объекту Error, который предоставляет сведения об ошибке, если операция завершилась неудачно.
AsyncResult.asyncContext Определите элемент любого типа, возвращаемый в объекте AsyncResult без изменений.

Примеры

function setBindingData() {
    Office.select("bindings#MyBinding").setDataAsync('Hello World!', function (asyncResult) { });
}

// Specifying the optional coercionType parameter lets you specify the kind of data you want to write to a binding.
// For example, in Word if you want to write HTML to a text binding, you can specify the coercionType parameter 
// as "html" as shown in the following example, which uses HTML <b> tags to make "Hello" bold.
function writeHtmlData() {
    Office.select("bindings#myBinding").setDataAsync(
        "<b>Hello</b> World!", {coercionType: "html"}, function (asyncResult) {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            write('Error: ' + asyncResult.error.message);
        }
    });
}

// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

// In this example, the call to setDataAsync passes the data parameter as an array of arrays
// (to create a single column of three rows), and specifies the data structure with the 
// coercionType parameter as a "matrix".
function writeBoundDataMatrix() {
    Office.select("bindings#myBinding").setDataAsync(
        [['Berlin'],['Munich'],['Duisburg']],{ coercionType: "matrix" }, function (asyncResult) {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            write('Error: ' + asyncResult.error.message);
        } else {
            write('Bound data: ' + asyncResult.value);
        }
    });
}
// Function that writes to a div with id='message' on the page.
function write(message) {
    document.getElementById('message').innerText += message;
}

// In the writeBoundDataTable function in this example, the call to setDataAsync passes the data parameter 
// as a TableData object (to write three columns and three rows), and specifies the data structure
// with the coercionType parameter as a "table".

// In the updateTableData function, the call to setDataAsync again passes the data parameter as a TableData object,
// but as a single column with a new header and three rows, to update the values in the last column 
// of the table created with the writeBoundDataTable function. The optional zero-based startColumn parameter 
// is specified as 2 to replace the values in the third column of the table.
function writeBoundDataTable() {
    // Create a TableData object.
    const myTable = new Office.TableData();
    myTable.headers = ['First Name', 'Last Name', 'Grade'];
    myTable.rows = [['Kim', 'Abercrombie', 'A'], ['Junmin','Hao', 'C'],['Toni','Poe','B']];

    // Set myTable in the binding.
    Office.select("bindings#myBinding").setDataAsync(myTable, { coercionType: "table" }, 
        function (asyncResult) {
            if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                write('Error: '+ asyncResult.error.message);
        } else {
            write('Bound data: ' + asyncResult.value);
        }
    });
}

// Replace last column with different data.
function updateTableData() {
    const newTable = new Office.TableData();
    newTable.headers = ["Gender"];
    newTable.rows = [["M"],["M"],["F"]];
    Office.select("bindings#myBinding").setDataAsync(newTable, { coercionType: "table", startColumn:2 }, 
        function (asyncResult) {
            if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                write('Error: '+ asyncResult.error.message);
        } else {
            write('Bound data: ' + asyncResult.value);
        }
    });
}

// In this example, the following call passes two formatting groups to cellFormat.
Office.select("bindings#myBinding").setDataAsync([['Berlin'],['Munich'],['Duisburg']],
  {cellFormat:[{cells: {row: 1}, format: {fontColor: "yellow"}}, 
      {cells: {row: 3, column: 4}, format: {borderColor: "white", fontStyle: "bold"}}]}, 
  function (asyncResult){});