LesezeichenAbonnierenRSS-Feed abonnieren
fmoritz
Explorer | Level 4

Hallo zusammen,

 

besteht denn die Möglichkeit, aus SAS EG heraus mittels Code eine HTML-Datei zu öffnen?

 

Ich erstelle HTML-Tabellen, aber nicht mit ods oder proc export. Stattdessen wird eine Textdatei erstellt, die HTML- bzw. CSS-Code beinhaltet. Für einfache Anwender wäre es sinnvoll, diese Tabellen zunächst nicht in den Tiefen des Dateisystems zu suchen (machen sie später ohnehin), sondern unmittelbar nach dem Programmablauf die gerade erstelle Tabelle betrachten zu können.

 

Ein Import der Daten bringt nichts, da die Tables nicht erkannt werden. Über das Menü Datei öffnen -> Sonstiges ->html funktioniert es hingegen perfekt! Ist es aber möglich, diese Funktion im Code unterzubringen, d.h. die gerade erstellte Tabelle aus dem Programm heraus zu öffnen?

 

Danke im Voraus und Grüße!

 

Felix

5 ANTWORTEN 5
Kurt_Bremser
Super User

Nachdem es nur um die Anzeige geht:

Wenn der SAS Workspace Server lokal läuft, kann man ja mit X oder CALL SYSTEM oder %sysexec einen externen Viewer für das File öffnen.

Läuft der Workspace Server remote, ist sowieso alles vergebene Liebesmüh, weil man aus dem Code nicht auf den Client (und schon gar nicht den aktiven Desktop) zugreifen kann.

BrunoMueller
SAS Super FREQ

Wir können aus dem SAS code heraus nicht Aktionen im EG steuren. Wir können dem EG aber sagen, dass wir eine Ausgabe erzeugt haben, er wird diese dann anzeigen. Das Beispiel Programm sollte in einem Codekonten stehen, der selber keine Ausgabe erzeugt.

 

Habe das Beispiel mit EG7.1 auf einem SAS Server 9.4 auf Linux getest.

 

* orginal HTML ;
filename xres "!HOME/sample.html";

* temp file, da wir orginal nicht verändern wollen ;
filename xres2 temp mod;
* kopie von orginal ;
data _null_;
  infile xres;
  input;
  file xres2;
  put _infile_;
run;

* dummy output erstellen, damit EG diesen anzeigt ;
ods html file=xres2 (NO_TOP_MATTER NO_BOTTOM_MATTER);

data _null_;
  declare odsout obj();
  obj.body_start();
  obj.body_end();
run;

ods html close;

Bruno

chsc
Calcite | Level 5

Nur zur Ergänzung: Zur programmatischen Kontrolle der Ergebnisanzeige gibt es einen schönen Beitrag vom Global Forum 2013. Inhatlich entspricht das den Antworten hier und liefert noch ein paar Hintergrundinformationen: Programmatically Controlling Output in EG

 

GrischaPfister
Fluorite | Level 6

Hallo Felix,

 

mir fällt dazu folgende Möglichkeit ein. Zunächst musst Du unter Extras -> Optionen -> Ergebnisse -> Ergebnisse allg. den Haken bei der Option "Manuell codierte ODS-Ergebnisse verknüpfen" setzen. Dann kannst Du folgenden Trick benutzen:

 

1.) Erzeugen der Textdatei mit dem HTML

2.) Filename-Statement auf einen temporären Buttter

3.) Den Ods HTML Kanal öffnen, aber ohne dass SAS den öffnenden und schließenden Teil des HTML erstellt

4.) Mit einem Data _Null_ Step den Inhalt der HTML-Datei an das ODS übergegen

5.) Ods Html schließen

 

Durch diese Methode wird die erzeugte HTML-Datei eins zu eins in einen "offiziellen" ODS-Stream kopiert und im EG als Ergebnis angezeigt.

(Es hilft, beim Programm unter Eigenschaften -> Ergebnisse die vom EG erzeugte Standard-Seite abzuschalten, dann wird nur das eigentliche Ergebnis angezeigt)

 

Hier ein kurzes Beispiel:

* GP Erzeugte HTML-Seite *;
Data _Null_;
  file "F:/temp/test.html";
  Put "<html><body style=""background-color:#336699""><h1>Test</h1><table border=""1""><tr><td>zelle1</td><td>zelle2</td></tr></body></html>";
run;

* GP Lesen und kopieren in ODS-Stream *;
Filename ttt TEMP;
Ods Html file=ttt(notop nobot);
Data _Null_;
  Infile "f:/temp/test.html";
  File print;
  Input;
  Put _infile_;
Run;
Ods Html Close;

Hoffe, das hilft Dir weiter.

 

Viele Grüße,

 

  Grischa

fmoritz
Explorer | Level 4

Vielen Dank! Es funktioniert beides, wobei die Ausgabe aus Bruno_SAS' Lösung optisch schöner ist.

 

Viele Grüße

 

Felix

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Diskussionsstatistiken
  • 5 Antworten
  • 1772 Aufrufe
  • 5 Kudos
  • 5 in Unterhaltung