Share via


Office.Binding interface

Représente une liaison à une section du document.

L’objet Binding expose les fonctionnalités possédées par toutes les liaisons, quel que soit leur type.

L’objet Binding n’est jamais appelé directement. Il s’agit de la classe parente abstraite des objets qui représentent chaque type de liaison : Office.MatrixBinding, Office.TableBinding ou Office.TextBinding. Ces trois objets héritent des méthodes getDataAsync et setDataAsync de l’objet Binding qui vous permettent d’interagir avec les données de la liaison. Ils héritent également des propriétés d’ID et de type pour interroger ces valeurs de propriété. En outre, les objets MatrixBinding et TableBinding exposent des méthodes supplémentaires pour les fonctionnalités relatives aux matrices et aux tableaux, par exemple le dénombrement des lignes et des colonnes.

Remarques

Applications : Word, Excel (déconseillé, utilisez Excel.Binding à la place)

Ensembles de conditions requises :

Propriétés

document

Obtient l’objet Document associé à la liaison.

id

Chaîne qui identifie de façon unique cette liaison parmi les liaisons du même objet Office.Document .

type

Obtient le type de la liaison.

Méthodes

addHandlerAsync(eventType, handler, options, callback)

Ajoute un gestionnaire d’événements à l’objet pour l’objet Office.EventType spécifié. Les EventTypes pris en charge sont Office.EventType.BindingDataChanged et Office.EventType.BindingSelectionChanged.

addHandlerAsync(eventType, handler, callback)

Ajoute un gestionnaire d’événements à l’objet pour l’objet Office.EventType spécifié. Les EventTypes pris en charge sont Office.EventType.BindingDataChanged et Office.EventType.BindingSelectionChanged.

getDataAsync(options, callback)

Retourne les données contenues dans la liaison.

getDataAsync(callback)

Retourne les données contenues dans la liaison.

removeHandlerAsync(eventType, options, callback)

Supprime le gestionnaire spécifié de la liaison pour le type d’événement spécifié.

removeHandlerAsync(eventType, callback)

Supprime le gestionnaire spécifié de la liaison pour le type d’événement spécifié.

setDataAsync(data, options, callback)

Écrit des données dans la section liée du document représenté par l’objet de liaison spécifié.

setDataAsync(data, callback)

Écrit des données dans la section liée du document représenté par l’objet de liaison spécifié.

Détails de la propriété

document

Obtient l’objet Document associé à la liaison.

document: Office.Document;

Valeur de propriété

Exemples

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

Chaîne qui identifie de façon unique cette liaison parmi les liaisons du même objet Office.Document .

id: string;

Valeur de propriété

string

Exemples

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

Obtient le type de la liaison.

type: Office.BindingType;

Valeur de propriété

Exemples

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;  
}

Détails de la méthode

addHandlerAsync(eventType, handler, options, callback)

Ajoute un gestionnaire d’événements à l’objet pour l’objet Office.EventType spécifié. Les EventTypes pris en charge sont Office.EventType.BindingDataChanged et Office.EventType.BindingSelectionChanged.

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

Paramètres

eventType
Office.EventType

Type d’événement. Pour les liaisons, il peut s’agir Office.EventType.BindingDataChanged de ou Office.EventType.BindingSelectionChanged.

handler

any

Fonction de gestionnaire d’événements à ajouter, dont le seul paramètre est de type Office.BindingDataChangedEventArgs ou Office.BindingSelectionChangedEventArgs.

options
Office.AsyncContextOptions

Fournit une option permettant de conserver les données de contexte de tout type, inchangées, pour une utilisation dans un rappel.

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult.

Retours

void

Remarques

Ensemble de conditions requises : BindingEvents

Vous pouvez ajouter plusieurs gestionnaires d’événements pour le eventType spécifié tant que le nom de chaque fonction de gestionnaire d’événements est unique.

addHandlerAsync(eventType, handler, callback)

Ajoute un gestionnaire d’événements à l’objet pour l’objet Office.EventType spécifié. Les EventTypes pris en charge sont Office.EventType.BindingDataChanged et Office.EventType.BindingSelectionChanged.

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

Paramètres

eventType
Office.EventType

Type d’événement. Pour les liaisons, il peut s’agir Office.EventType.BindingDataChanged de ou Office.EventType.BindingSelectionChanged.

handler

any

Fonction de gestionnaire d’événements à ajouter, dont le seul paramètre est de type Office.BindingDataChangedEventArgs ou Office.BindingSelectionChangedEventArgs.

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult.

Retours

void

Remarques

Ensemble de conditions requises : BindingEvents

Vous pouvez ajouter plusieurs gestionnaires d’événements pour le eventType spécifié tant que le nom de chaque fonction de gestionnaire d’événements est unique.

Exemples

// 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)

Retourne les données contenues dans la liaison.

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

Paramètres

options
Office.GetBindingDataOptions

Fournit des options permettant d’obtenir les données dans une liaison.

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult. La value propriété du résultat est les valeurs de la liaison spécifiée. Si le coercionType paramètre est spécifié (et que l’appel réussit), les données sont retournées au format décrit dans la rubrique énumération CoercionType.

Retours

void

Remarques

Ensembles de conditions requises :

Lorsqu’elle est appelée à partir d’un MatrixBinding ou d’un TableBinding, la méthode getDataAsync retourne un sous-ensemble des valeurs liées si les paramètres facultatifs startRow, startColumn, rowCount et columnCount sont spécifiés (et qu’ils spécifient une plage contiguë et valide).

getDataAsync(callback)

Retourne les données contenues dans la liaison.

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

Paramètres

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult. La value propriété du résultat est les valeurs de la liaison spécifiée. Si le coercionType paramètre est spécifié (et que l’appel réussit), les données sont retournées au format décrit dans la rubrique énumération CoercionType.

Retours

void

Remarques

Ensembles de conditions requises :

Lorsqu’elle est appelée à partir d’un MatrixBinding ou d’un TableBinding, la méthode getDataAsync retourne un sous-ensemble des valeurs liées si les paramètres facultatifs startRow, startColumn, rowCount et columnCount sont spécifiés (et qu’ils spécifient une plage contiguë et valide).

Exemples

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 == '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 == '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)

Supprime le gestionnaire spécifié de la liaison pour le type d’événement spécifié.

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

Paramètres

eventType
Office.EventType

Type d’événement. Pour les liaisons, il peut s’agir Office.EventType.BindingDataChanged de ou Office.EventType.BindingSelectionChanged.

options
Office.RemoveHandlerOptions

Fournit des options pour déterminer le ou les gestionnaires d’événements qui sont supprimés.

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult.

Retours

void

Remarques

Ensemble de conditions requises : BindingEvents

removeHandlerAsync(eventType, callback)

Supprime le gestionnaire spécifié de la liaison pour le type d’événement spécifié.

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

Paramètres

eventType
Office.EventType

Type d’événement. Pour les liaisons, il peut s’agir Office.EventType.BindingDataChanged de ou Office.EventType.BindingSelectionChanged.

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult.

Retours

void

Remarques

Ensemble de conditions requises : BindingEvents

Exemples

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

setDataAsync(data, options, callback)

Écrit des données dans la section liée du document représenté par l’objet de liaison spécifié.

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

Paramètres

data

Office.TableData | any

Données à définir dans la sélection actuelle. Types de données possibles par application Office :

chaîne : Excel sur le Web et Windows, et Word sur le web et sur Windows uniquement

tableau de tableaux : Excel et Word uniquement

Office.TableData : Excel et Word uniquement

HTML : Word sur le web et sur Windows uniquement

Office Open XML : Word uniquement

options
Office.SetBindingDataOptions

Fournit des options pour définir les données dans une liaison.

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult.

Retours

void

Remarques

Ensembles de conditions requises :

La valeur passée pour les données contient les données à écrire dans la liaison. Le type de valeur transmis détermine ce qui sera écrit, comme le décrit le tableau suivant.

Valeur data Données écrites
Une chaîne de caractère Le texte brut ou tout ce qui peut être contenu sous la force d’une chaîne sera écrit.
Tableau de tableaux (« matrice ») Les données sous forme de tableau sans en-têtes seront écrites. Par exemple, pour écrire des données sur trois lignes dans deux colonnes, vous pouvez transmettre un tableau comme suit : \[\["R1C1", "R1C2"\], \["R2C1", "R2C2"\], \["R3C1", "R3C2"\]\]. Pour écrire une seule colonne de trois lignes, passez un tableau comme suit : \[\["R1C1"\], \["R2C1"\], \["R3C1"\]\].
Objet TableData Un tableau avec des en-têtes est écrit.

En outre, ces actions (spécifiques aux applications) s’appliquent lors de l’écriture de données dans une liaison. Par Word, les données spécifiées sont écrites dans la liaison comme suit.

Valeur data Données écrites
Une chaîne de caractère Le texte spécifié est écrit.
Tableau de tableaux (« matrice ») ou objet TableData Un tableau Word est écrit.
HTML Le code HTML spécifié est écrit. Si le code HTML que vous écrivez n’est pas valide, Word ne déclenche aucune erreur. Word écrit autant de code HTML que possible et omet les données non valides.
Office Open XML (« Open XML ») Le code XML spécifié est écrit.

Pour Excel, les données spécifiées sont écrites dans la liaison comme suit.

Valeur data Données écrites
Une chaîne de caractère Le texte spécifié est inséré en tant que valeur de la première cellule liée. Vous pouvez également spécifier une formule valide pour l’ajouter à la cellule liée. Par exemple, la définition du paramètre data sur "=SUM(A1:A5)" totalisera les valeurs de la plage spécifiée. Toutefois, après avoir défini une formule sur la cellule liée, vous ne pouvez pas lire la formule ajoutée (ni les formules préexistantes) à partir de la cellule liée. Si vous appelez la méthode Binding.getDataAsync sur la cellule liée pour en lire les données, la méthode peut renvoyer uniquement les données affichées dans la cellule (le résultat de la formule).
Tableau de tableaux ("matrix") et la forme correspond exactement à la forme de la liaison spécifiée L’ensemble de lignes et de colonnes est écrit. Vous pouvez également spécifier un tableau de tableaux qui contiennent des formules valides pour les ajouter aux cellules liées. Par exemple, la définition de données sur \[\["=SUM(A1:A5)","=AVERAGE(A1:A5)"\]\] ajoute ces deux formules à une liaison qui contient deux cellules. Tout comme lorsque vous définissez une formule sur une seule cellule liée, vous ne pouvez pas lire les formules ajoutées (ou les formules préexistantes) à partir de la liaison avec la Binding.getDataAsync méthode : elle retourne uniquement les données affichées dans les cellules liées.
Objet TableData et la forme du tableau correspond à la table liée L’ensemble spécifié de lignes et/ou d’en-têtes est écrit, si aucune autre donnée dans les cellules environnantes ne sera écrasée. **Remarque** : si vous spécifiez des formules dans l’objet TableData que vous passez pour le paramètre *data*, vous risquez de ne pas obtenir les résultats attendus en raison de la fonctionnalité « colonnes calculées » d’Excel, qui duplique automatiquement les formules dans une colonne. Pour contourner ce problème lorsque vous souhaitez écrire des *données* qui contiennent des formules dans une table liée, essayez de spécifier les données sous la forme d’un tableau de tableaux (au lieu d’un TableData objet) et spécifiez *coercionType* comme Microsoft.Office.Matrix ou « matrice ».

Pour Excel sur le Web :

  • Le nombre total de cellules dans la valeur passée au paramètre de données ne peut pas dépasser 20 000 dans un seul appel à cette méthode.

  • Le nombre de groupes de mise en forme passés au paramètre cellFormat ne peut pas dépasser 100. Un groupe de mise en forme se compose d’un ensemble de mises en forme appliquées à une plage de cellules donnée.

Dans tous les autres cas, une erreur est retournée.

La méthode setDataAsync écrit des données dans un sous-ensemble d’une liaison de table ou de matrice si les paramètres facultatifs startRow et startColumn sont spécifiés et qu’ils spécifient une plage valide.

Dans la fonction de rappel passée à la méthode setDataAsync, vous pouvez utiliser les propriétés de l’objet AsyncResult pour renvoyer les informations suivantes.

Propriété Utilisation
AsyncResult.value Retourne undefined toujours, car il n’y a pas d’objet ou de données à récupérer.
AsyncResult.status Déterminer si l’opération a réussi ou échoué.
AsyncResult.error Accéder à un objet Error fournissant des informations sur l’erreur en cas d’échec de l’opération.
AsyncResult.asyncContext Définissez un élément de tout type retourné dans l’objet AsyncResult sans être modifié.

setDataAsync(data, callback)

Écrit des données dans la section liée du document représenté par l’objet de liaison spécifié.

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

Paramètres

data

Office.TableData | any

Données à définir dans la sélection actuelle. Types de données possibles par application Office :

chaîne : Excel sur le Web et sur Windows, et Word sur le web et sur Windows uniquement

tableau de tableaux : Excel et Word uniquement

TableData: Excel et Word uniquement

HTML : Word sur le web et sur Windows uniquement

Office Open XML : Word uniquement

callback

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

Optional. Fonction appelée lorsque le rappel est retourné, dont le seul paramètre est de type Office.AsyncResult.

Retours

void

Remarques

Ensembles de conditions requises :

La valeur passée pour les données contient les données à écrire dans la liaison. Le type de valeur transmis détermine ce qui sera écrit, comme le décrit le tableau suivant.

Valeur data Données écrites
Une chaîne de caractère Le texte brut ou tout ce qui peut être contenu sous la force d’une chaîne sera écrit.
Tableau de tableaux (« matrice ») Les données sous forme de tableau sans en-têtes seront écrites. Par exemple, pour écrire des données sur trois lignes dans deux colonnes, vous pouvez transmettre un tableau comme suit : \[\["R1C1", "R1C2"\], \["R2C1", "R2C2"\], \["R3C1", "R3C2"\]\]. Pour écrire une seule colonne de trois lignes, passez un tableau comme suit : \[\["R1C1"\], \["R2C1"\], \["R3C1"\]\].
Objet TableData Un tableau avec des en-têtes est écrit.

En outre, ces actions (spécifiques aux applications) s’appliquent lors de l’écriture de données dans une liaison. Par Word, les données spécifiées sont écrites dans la liaison comme suit.

Valeur data Données écrites
Une chaîne de caractère Le texte spécifié est écrit.
Tableau de tableaux (« matrice ») ou objet TableData Un tableau Word est écrit.
HTML Le code HTML spécifié est écrit. Si le code HTML que vous écrivez n’est pas valide, Word ne déclenche aucune erreur. Word écrit autant de code HTML que possible et omet les données non valides.
Office Open XML (« Open XML ») Le code XML spécifié est écrit.

Pour Excel, les données spécifiées sont écrites dans la liaison comme suit.

Valeur data Données écrites
Une chaîne de caractère Le texte spécifié est inséré en tant que valeur de la première cellule liée. Vous pouvez également spécifier une formule valide pour l’ajouter à la cellule liée. Par exemple, la définition du paramètre data sur "=SUM(A1:A5)" totalisera les valeurs de la plage spécifiée. Toutefois, après avoir défini une formule sur la cellule liée, vous ne pouvez pas lire la formule ajoutée (ni les formules préexistantes) à partir de la cellule liée. Si vous appelez la Binding.getDataAsync méthode sur la cellule liée pour lire ses données, la méthode peut retourner uniquement les données affichées dans la cellule (résultat de la formule).
Tableau de tableaux ("matrix") et la forme correspond exactement à la forme de la liaison spécifiée L’ensemble de lignes et de colonnes est écrit. Vous pouvez également spécifier un tableau de tableaux qui contiennent des formules valides pour les ajouter aux cellules liées. Par exemple, la définition de données sur \[\["=SUM(A1:A5)","=AVERAGE(A1:A5)"\]\] ajoute ces deux formules à une liaison qui contient deux cellules. Tout comme lorsque vous définissez une formule sur une seule cellule liée, vous ne pouvez pas lire les formules ajoutées (ou les formules préexistantes) à partir de la liaison avec la Binding.getDataAsync méthode : elle retourne uniquement les données affichées dans les cellules liées.
Objet TableData et la forme du tableau correspond à la table liée L’ensemble spécifié de lignes et/ou d’en-têtes est écrit, si aucune autre donnée dans les cellules environnantes ne sera écrasée. **Remarque** : si vous spécifiez des formules dans l’objet TableData que vous passez pour le paramètre *data*, vous risquez de ne pas obtenir les résultats attendus en raison de la fonctionnalité « colonnes calculées » d’Excel, qui duplique automatiquement les formules dans une colonne. Pour contourner ce problème lorsque vous souhaitez écrire des *données* qui contiennent des formules dans une table liée, essayez de spécifier les données sous la forme d’un tableau de tableaux (au lieu d’un TableData objet) et spécifiez *coercionType* comme Microsoft.Office.Matrix ou « matrice ».

Pour Excel sur le Web :

  • Le nombre total de cellules dans la valeur passée au paramètre de données ne peut pas dépasser 20 000 dans un seul appel à cette méthode.

  • Le nombre de groupes de mise en forme passés au paramètre cellFormat ne peut pas dépasser 100. Un groupe de mise en forme se compose d’un ensemble de mises en forme appliquées à une plage de cellules donnée.

Dans tous les autres cas, une erreur est retournée.

La méthode setDataAsync écrit des données dans un sous-ensemble d’une liaison de table ou de matrice si les paramètres facultatifs startRow et startColumn sont spécifiés et qu’ils spécifient une plage valide.

Dans la fonction de rappel passée à la méthode setDataAsync, vous pouvez utiliser les propriétés de l’objet AsyncResult pour renvoyer les informations suivantes.

Propriété Utilisation
AsyncResult.value Retourne undefined toujours, car il n’y a pas d’objet ou de données à récupérer.
AsyncResult.status Déterminer si l’opération a réussi ou échoué.
AsyncResult.error Accéder à un objet Error fournissant des informations sur l’erreur en cas d’échec de l’opération.
AsyncResult.asyncContext Définissez un élément de tout type retourné dans l’objet AsyncResult sans être modifié.

Exemples

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 == "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 == "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){});