Ich entwickle ein Word-Addin, bei dem ein Benutzer einige vordefinierte Vorlagen (docx) auswählen kann, die aus SharePoint geladen werden. Über einen Assistenten werden die Inhaltssteuerelemente im Dokument festgelegt. Soweit eine sehr gute Erfahrung.Header wird nicht angezeigt, wenn ich ein Dokument einfüge
Ich habe jedoch ein Problem beim Laden einer Docx-Datei mit Kopfzeilen.
Ich bin mit dieser Funktion die docx-Datei laden: (vollständigen Code unten)
body.insertFileFromBase64(templateDoc.base64String, Word.InsertLocation.end);
das funktioniert, aber manchmal ist die Header des Quelldokumentes nicht vorhanden ist. Oder andere Male sind sie auf allen Seiten, während die erste Seite anders sein sollte.
Frage: Sollte das Einfügen eines Dokuments mit Kopf- und Fußzeilen funktionieren und mache ich etwas falsch?
private applyTemplate(template: Template): void {
if (!Office.context.requirements.isSetSupported("WordApi", 1.2)) {
this.errorMessage = 'Deze versie van Word wordt niet ondersteund';
this.showError = true;
return;
}
let calls: [
ng.IPromise<TemplateFile>
] = [
this.appService.getTemplateDocument(template.templateId)
];
this.q.all(calls)
.then((results: any[]) => {
let templateDoc: TemplateFile = results[0].data;
Word.run((context) => {
let body = context.document.body;
let sections = context.document.sections;
context.load(sections, 'body/style');
body.clear();
return context.sync()
.then(() => {
sections.items[0].getHeader(Word.HeaderFooterType.primary).clear();
sections.items[0].getFooter(Word.HeaderFooterType.primary).clear();
return context.sync()
.then(() => {
body.insertFileFromBase64(templateDoc.base64String, Word.InsertLocation.end);
this.appService.setTemplateSelected(template);
return context.sync()
.then(() => {
this.go('/customers');
this.scope.$apply();
}, ((result: OfficeErrorMessage) => {
this.setErrorState(result);
}));
}, ((result: OfficeErrorMessage) => {
this.setErrorState(result);
}));
}, ((result: OfficeErrorMessage) => {
this.setErrorState(result);
}));
});
}, ((result: ng.IHttpPromiseCallbackArg<ErrorMessage>) => {
this.errorMessage = result.data.exceptionMessage;
this.showError = true;
this.scope.$apply();
}));
}
*** bearbeiten Ich sehe dies ist in einer neuen Version kommen: https://github.com/OfficeDev/office-js-docs/blob/WordJs_1.3_Openspec/word/resources/application.md
Was ist der Unterschied mit dem, was ich tue?
Fügen Sie die Kopf-/Fußzeilen korrekt ein, wenn Sie zu Word.InsertLocation.replace wechseln? Ich vermute, Word fügt die Kopf-/Fußzeile nicht ein, wenn vorhandener Inhalt vorhanden ist. –
Es tut mir leid, wenn meine Frage nicht klar war, aber ich füge eine docx-Datei in das Dokument ein. Die Quelldatei hat keinen Header auf der ersten Seite, aber nach dem Einfügen hat sie eine Kopfzeile auf der ersten Seite. Es ist also nicht dasselbe wie die Quelle. Ich habe ein Problem, das die Header löscht, aber diese haben in meinem Fall für jetzt einen Workaround. –