Clever-Excel-Forum

Normale Version: Welcher Browser läuft bei der Ausführung eines Add-Ins?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo allerseits!

Ich verwende Excel 2016 mit einem Excel-Add-In. Der Excel-Add-In zeigt einen Browser auf der rechten Seite. Siehe angehängten Screenshot. Der Browser zeigt eine html-Seite.

Um welchen Browser handelt es sich?

(a) Es ist ein Excel-eigener Browser.
(b) Microsoft Edge
© Microsoft Internet Explorer
(d) Google Chrome
(e) Mozilla Firefox

In den Systemeinstellungen ist Google Chrome als Standardbrowser eingestellt. Wie kann man herausfinden, welchen Browser Excel zum Anzeigen von html-Seiten eines Add-Ins verwendet?
Hallo,

die Antwort auf deine Frage hast du dir selber schon gegeben:  
Zitat:In den Systemeinstellungen ist Google Chrome als Standardbrowser eingestellt.
Hallo,

nein, nicht der Standardbrowser. Es ist der Internet Explorer. Siehe auch hier Requirements for running Office Add-ins

Zitat:Internet Explorer 11 or later, which must be installed but doesn't have to be the default browser. 
To support Office Add-ins, the Office client that acts as host uses browser components that are
part of Internet Explorer 11 or later.

Gruß
Es ist der Internet Explorer. Ich habe es wie folgt herausgefunden. In die html-Seite habe ich folgenden Link reinprogrammiert:


Code:
<br />
<br />
<a href="https://yandex.ru/internet/" target="_self" rel="noopener">Yandex</a>

Im nächsten Schritt habe ich den Inhalt meines Webprojektes auf den IIS-Server kopiert. Dann habe ich mein Excel-Add-In über Microsoft Visual Studio gestartet. Als die html-Seite auf der rechten Seite erschien, klickte ich auf den Yandex-Link, den ich selbst eingebaut habe. Es erschien ein neues Fenster von

Internet Explorer 11.0 (Trident 7.0)

Das stand im Yandex Internotometr drin. Nun die Frage, kann man die Einstellungen so ändern, dass Excel-Add-In Google Chrome verwendet?
Hallo,

Nur IE geht - insofern, nein, das kannst Du m.W. nicht ändern.

Gruß
Ich habe eigentlich das folgende Problem. Das Excel-Add-In wurde in Javascript programmiert. Ich habe innerhalb meines Excel-Add-Ins eine Routine entwickelt, die mithilfe eines XMLHttpRequest ein Request auf einen IIS - Server sendet, der eine SQL - Datenbankabfrage macht und mir Daten aus der Datenbank im json - Format liefern soll. Die Routine sieht wie folgt aus.

Code:
var url = "https://wosevvt227/ajaxReq/php/getData.php";
       var xhr = new XMLHttpRequest();
       
       xhr.open('GET', url);
       xhr.responseType = 'json';
       //xhr.setRequestHeader("Authorization", "Basic ***********==");
       xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
       xhr.withCredentials = true;
       xhr.onload = function () {
           var status = xhr.status;
           console.log("Status: " + status);
           if (status == 200) {
               console.log("All ok");
           } else {
               console.log("Houston, we have a problem");
           }

           var response = xhr.responseText;
           console.log("Response: " + response);
       };
       xhr.send();

Leider bekomme ich bei der Ausführung dieser Routine einen Fehler.

SCRIPT7002: XMLHttpRequest: Network error 0x80070005, Access denied
MissingPartSummary.html


Nun habe ich in einem anderen Forum (stackoverlow.com) zunächst erfahren, dass ich meinen IIS-Server zu den Localen Intranet-Sites hinzufügen soll. Das angehängte Screenshot zeigt die Stelle wo man das machen kann. Wenn ich dort auf Erweitert klicke, komme ich zu dieser Stelle. Leider habe ich nicht die Berechtigung dazu. Selbst als lokaler Administrator kann ich keine Sites hinzufügen. Also habe ich mir gedacht, ich ändere den Browser von Internet explorer auf Google Chrome. Wenn das nicht geht, kann ich quasi den Fehler gar nicht lösen!? Oder gibt es eine andere Idee?
Ich habe jetzt das Problem gelöst, indem ich "Access-Control-Allow-Origin", "*" auf die Serverseite verschoben habe.

Zu diesem Zweck habe ich einen neuen php-Skript getDataAllowOrigin.php entwickelt, indem ich zum alten getData.php die Zeile


PHP-Code:
header('Access-Control-Allow-Origin: https://evdata-t'); 

hinzugefügt. Danach habe ich meine Javascript - Routine angepasst.

Code:
var url = "https://wosevvt227/ajaxReq/php/getDataAllowOrigin.php";
var xhr = new XMLHttpRequest();
       
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.withCredentials = true;
xhr.onload = function () {
           var status = xhr.status;
           console.log("Status: " + status);
           if (status === 200) {
               console.log("All ok");
           } else {
               console.log("Houston, we have a problem");
           }

           var response = xhr.responseText;
           console.log("Response: " + response);
       };
xhr.send();

Danach hatte ich den Fehler Access Denied nicht mehr. Hier die Ausgabe in der Javascript-Konsole:

Status: 200
All ok
Response:
Warning: sqlsrv_query() expects parameter 1 to be resource, null given in C:\inetpub\wwwroot\bb\ajaxReq\php\getDataAllowO rigin.php on line 17

Warning: sqlsrv_fetch_array() expects parameter 1 to be resource, boolean given in C:\inetpub\wwwroot\bb\ajaxReq\php\getDataAllowO rigin.php on line 21

Warning: sqlsrv_free_stmt() expects parameter 1 to be resource, boolean given in C:\inetpub\wwwroot\bb\ajaxReq\php\getDataAllowO rigin.php on line 30

Warning: sqlsrv_close() expects parameter 1 to be resource, null given in C:\inetpub\wwwroot\bb\ajaxReq\php\getDataAllowO rigin.php on line 31
[]
Hallo,

zu Deinem Code kann ich jetzt nicht allzuviel sagen. Folgend, wie ich mit Excel JS Daten per PHP als JSON zurückgeben lasse...


Code:
namespace ExcelTranslatorAPI {

    export async function getCategories(parameters:string): Promise<Function[]> {
        return getJson(await fetch("https://.../categories.php" + parameters));
    }

    export async function getLanguages(parameters:string): Promise<Function[]> {
        return getJson(await fetch("https://.../languages.php" + parameters));
    }

    function getJson(r) {
        if (r.status == 200) {
            return r.json();
        } else {
            return { "Error": r.statusText };
        }
    }
}

In der PHP-Datei muss müssen zudem entsprechende Header gesetzt werden...

Code:
header('Content-Type:application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');

Bei mir läuft das auf meinem Server (also im Internet) oder Azure.

Gruß