2017-05-02 2 views
0

Ich schreibe eine Anwendung, die Excel 2013 Interop.Excel Interop auf Build-Server

Mein erster Schritt war, die Referenz mit dem add reference > com Panel hinzuzufügen. Aber die Erstellung meiner Jenkins ist fehlgeschlagen, weil Office nicht auf dem Server installiert ist.

Es ist nicht in Frage, Office auf dem Server zu installieren, aber ich suchte nach Office 2013 PIA (wie auf this post und so viele andere im Internet vorgeschlagen), aber ich konnte es nicht finden.

Also habe ich die nuget package dafür installiert. Es war in Ordnung, außer, dass es nicht installieren läßt die Microsoft.Office.Core dll zum Beispiel gewünschten Bild zu einem Arbeitsblatt hinzuzufügen ... Und ich brauche diese Funktion ...

  • Weißt du, wo ich finden kann die Microsoft.Office.Core.dll oder die Office 2013 PIA?

  • Oder haben Sie eine andere Lösung, die ohne den gesamten Code umschreiben könnte, der derzeit funktioniert?

+0

Warum bitte den Downvote? – fharreau

Antwort

1

Empfehlen Sie OpenXml zu verwenden, die einfach zu bedienen ist und werden Sie nicht zur Installation von Office benötigen.

+0

Das ist eine Option, die ich gerne vermeiden würde, aber ich behalte es im Hinterkopf, wenn ich es nicht herausfinden kann. – fharreau

+0

@fharreau Wie Sie vielleicht wissen, funktioniert Excel.Interop nicht ohne Office.So wird es ein Problem sein. Sie sollten auf jeden Fall OpenXml verwenden. –

+0

Oder eine andere Bibliothek, wie EPPlus – Magnetron

0

Sie können Agenten (einen oder mehrere) hinzufügen, die Windows-Computer mit den erforderlichen Bibliotheken sind, und dann den Master-Knoten so konfigurieren, dass nur Builds ausgeführt werden, die ihm speziell zugewiesen sind.

Dann müssen Sie die Excel 2013-Entwicklungsumgebung nicht auf Ihrem Server installieren, und Ihre Build-Umgebung wird die Benutzerumgebung besser darstellen.

Siehe How to set up new Jenkins slave (wobei „Slave“ ist es, die in Ungnade Begriff für einen Agenten)

+0

Ich kann die Excel-Entwicklungsumgebung auf dem Server installieren, solange ich nicht das gesamte Office installiere. Mein Problem ist, dass ich die Version 2013 des PIA nicht finden kann ... – fharreau

+0

Wenn die Version 2013 des PIA nicht für Server verfügbar ist, dann ist es nicht einfacher, die Version 2013 auf einem Windows-Desktop-Rechner zu installieren und dann zu verwenden dieser Windows-Desktop-Rechner als Build-Agent? –

+0

Wovon redest du? Office-Entwicklungstools oder das vollständige Office 2013? Ob ich Office auf einem Server oder einem klassischen Windows installiere, es ist das gleiche Problem, das ich nicht möchte. – fharreau

0

Microsoft derzeit nicht empfehlen, und nicht unterstützt, Automatisierung von Microsoft Office-Anwendungen von jedem unbeaufsichtigt, nicht-interaktiven Client Anwendung oder Komponente (einschließlich ASP-, ASP.NET-, DCOM- und NT-Dienste), da Office möglicherweise instabiles Verhalten und/oder Deadlock aufweist, wenn Office in dieser Umgebung ausgeführt wird.

Wenn Sie eine Lösung erstellen, die in einem serverseitigen Kontext ausgeführt wird, sollten Sie versuchen, Komponenten zu verwenden, die für die unbeaufsichtigte Ausführung gesichert wurden. Oder Sie sollten versuchen, Alternativen zu finden, mit denen zumindest ein Teil des Codes clientseitig ausgeführt werden kann. Wenn Sie eine Office-Anwendung von einer serverseitigen Lösung aus verwenden, fehlen der Anwendung viele der für die erfolgreiche Ausführung erforderlichen Funktionen. Darüber hinaus gehen Sie mit der Stabilität Ihrer Gesamtlösung Risiken ein. Lesen Sie mehr dazu im Artikel Considerations for server-side Automation of Office.

Als eine mögliche Problemumgehung können Sie das Open XML SDK verwenden, wenn Sie nur mit offenen XML-Dokumenten arbeiten, siehe Welcome to the Open XML SDK 2.5 for Office. Oder nur eine Komponente von Drittanbietern, die für die serverseitige Ausführung (z. B. Aspose) entwickelt wurde.

+0

Meine Anwendung ist eine WPF-Anwendung, die auf Clientcomputern ausgeführt wird, auf denen Office installiert ist. Ich möchte es nur auf meinem CI-Server erstellen, nicht darauf oder auf einem serverseitigen Kontext. – fharreau

Verwandte Themen