Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous écrivez du code qui utilise le modèle objet JavaScript (JSOM), il existe deux scénarios où le code peut s’exécuter : sur une page SharePoint ; ou sur une page web hôte qui contient un classeur incorporé stocké sur Microsoft OneDrive. Cet article explique la différence principale entre les deux scénarios incidence significative sur la façon dont vous écrivez votre code.
À l'aide d'Excel Services JSOM
Le tableau 1 répertorie les différences entre les deux scénarios disponibles lorsque vous écrivez du code qui utilise le JSOM.
Tableau 1. Scénarios pour Excel Services JSOM
Emplacement | Description |
---|---|
OneDrive |
Dans ce scénario, vous incorporez un classeur stocké sur OneDrive dans la page web de l’hôte à l’aide d’un code HTML Élément. Puis vous incluez le code dans la page qui interagit avec le classeur incorporé. |
SharePoint |
Dans ce scénario, vous disposez d’une page SharePoint servie par SharePoint. Vous insérez un composant WebPart dans la page SharePoint qui contient un classeur stocké dans un emplacement approuvé. Ensuite, vous incluez du code dans la page SharePoint qui interagit avec le composant WebPart. |
La principale différence entre l’écriture de code pour les deux scénarios est la façon dont vous obtenez une référence à l’objet Ewa.EwaControl . Le [Ewa.EwaControl] étant le point d'entrée pour le modèle d'objet JavaScript , vous devez obtenir une référence à ce qu'il fonctionne avec le JSOM.
Obtention d'une référence à l'objet EwaControl (SharePoint)
Lorsque vous écrivez du code qui interagit avec un composant WebPart sur une page SharePoint, vous obtenez une référence à l’objet [Ewa.EwaControl] à l’aide de la méthode Ewa.EwaControlCollection.getItem(index), comme illustré dans l’exemple de code suivant.
<script type="text/javascript">
var ewa = null;
// Add event handler for onload event.
if (window.attachEvent)
{
window.attachEvent("onload", ewaOmPageLoad);
}
else
{
window.addEventListener("DOMContentLoaded", ewaOmPageLoad, false);
}
// Add event handler for applicationReady event.
function ewaOnPageLoad()
{
if (typeof (Ewa) != "undefined")
{
Ewa.EwaControl.add_applicationReady(ewaApplicationReady);
}
else
{
alert("Error - the EWA is not loaded.");
}
// Add additional page load code here.
}
function ewaApplicationReady()
{
// Get a reference to the Excel Services web part.
ewa = Ewa.EwaControl.getInstances().getItem(0);
// Add other initialization logic here.
}
// Add your code here.
</script>
Obtention d'une référence à l'objet EwaControl (OneDrive )
Lorsque vous écrivez du code permettant d'interagir avec un classeur incorporé stocké sur OneDrive, vous obtenez une référence à l'objet [Ewa.EwaControl] par le biais de l'objet AsyncResult . L'objet [AsyncResult] est passé en tant que paramètre unique à la méthode de rappel que vous spécifiez dans la méthode statique Ewa.EwaControl.loadEwaAsync . Lorsque le rappel est appelé, une référence à l'objet [Ewa.EwaControl] est incluse dans l'objet [AsyncResult]. L'exemple de code suivant montre comment obtenir une référence à l'objet [Ewa.EwaControl] par le biais de l'objet [AsyncResult].
<div id="myExcelDiv" style="width: 402px; height: 346px"></div>
<script type="text/javascript" src="http://r.office.microsoft.com/r/rlidExcelWLJS?v=1&kip=1"></script>
<script type="text/javascript">
/*
* This code uses the Microsoft Office Excel JavaScript object model to programmatically insert the
* Excel Web App into a div with id=myExcelDiv. The full API is documented at
* https://msdn.microsoft.com/library/hh315812.aspx. There you can find out how to programmatically get
* values from your Excel file and how to use the rest of the object model.
*/
// Use this file token to reference Book1.xlsx in the Excel APIs
// Replace the the placeholder for the filetoken with your value
var fileToken = " XXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXX/";
var ewa = null;
// Run the Excel load handler on page load.
if (window.attachEvent)
{
window.attachEvent("onload", loadEwaOnPageLoad);
} else
{
window.addEventListener("DOMContentLoaded", loadEwaOnPageLoad, false);
}
function loadEwaOnPageLoad()
{
var props = {
uiOptions: {
showGridlines: false,
showRowColumnHeaders: false,
showParametersTaskPane: false
},
interactivityOptions: {
allowTypingAndFormulaEntry: false,
allowParameterModification: false,
allowSorting: false,
allowFiltering: false,
allowPivotTableInteractivity: false
}
};
// Embed workbook using loadEwaAsync
Ewa.EwaControl.loadEwaAsync(fileToken, "myExcelDiv", props, onEwaLoaded);
}
function onEwaLoaded(asyncResult)
{
if (asyncResult.getSucceeded())
{
// Use the AsyncResult.getEwaControl() method to get a reference to the EwaControl object
ewa = asyncResult.getEwaControl();
…
}
else
{
alert("Async operation failed!");
}
// ...
}
</script>
Conclusion
L’écriture d’une solution qui utilise le modèle objet JavaScript est essentiellement la même que la solution s’exécute sur SharePoint ou sur une page web hôte. La principale différence est la façon dont vous obtenez une référence à l'objet [Ewa.EwaControl]. Une fois que vous avez une référence à l'objet [Ewa.EwaControl], le reste du code que vous écrivez sera presque identique pour les deux scénarios.