ich ein Office-Add-in mit AngularJS und AngularJS-ui-Router machen wollen:Reference: Excel ist nicht definiert
<bt:Urls>
<bt:Url id="Contoso.Taskpane3.Url" DefaultValue="https://localhost:3000/addin/test" />
</bt:Urls>
Der Name des Moduls ist app
, und der Router ist wie folgt:
.state('addinTest', {
url: '/addin/test',
tempalte: 'abc',
controller: 'TestCtrl',
resolve: {
loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load('https://appsforoffice.microsoft.com/lib/1/hosted/office.js');
}],
initOffice: ['loadMyCtrl', function (loadMyCtrl) {
Office.initialize = function (reason) {
$(document).ready(function() {
angular.element(document).ready(function() {
angular.bootstrap(document, ['app'])
})
});
}
return Promise.resolve(null)
}]
}
})
Und der Controller:
app.controller('TestCtrl', [function() {
function loadDataAndCreateChart() {
Excel.run(function (ctx) {
var sheet = ctx.workbook.worksheets.getActiveWorksheet();
sheet.getRange("A1").values = "Quarterly Sales Report";
return ctx.sync()
})
}
loadDataAndCreateChart()
}])
ich würde erwarten, dass das Add-in geladen schreibt Quarterly Sales Report
bis A1
. Allerdings habe ich folgenden Fehler:
ReferenceError: Excel is not defined at loadDataAndCreateChart
Weiß jemand, was los ist? Ist es in Ordnung, Office zu initialisieren und so zu verwenden?
ich Ihre Lösung nicht getestet ... Ich denke, setzen 'Rückkehr Promise.resolve (null)' 'nach angular.bootstrap (document, ['app']) '' in meinem Code, und inject 'initOffice' in' TestCtrl' wird das Problem auch beheben ... – SoftTimur