Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: TomLudwig am 07.04.05 - 12:42:29
-
Hallo,
ich möchte über einen Button (im Web) eine Ecxel Datei erzeugen.
Funtkioniert dies nur, wenn am Server Ecxel instlaliert ist. Oder reicht die Excel Installation am Client?
Vielen Dank
Gruß, Tom
-
mit welchen Mitteln möchtest du die denn erzeugen?
-
Wie ist mir relativ egal.
Hauptsache es funktioniert ;D
Allerdings habe ich es persönlich erst mit LS in einem Agenten realisiert.
Da dieser dann nur am Server läuft, denke ich, dass Excel am Server installiert sein muss.
Aber ich bin für alle neuen Vorschläge offen ;D
-
wenn es ein Script-Agent per OLE nach Excel exportiert, dann muss Excel am Server installiert sein. Von installierten Anwendungen auf dem Server halte ich nicht viel. Was passsiert, wenn Ihr auf Linux wechselt?
-
Die Frage ist: Warum Excel? Um das nachher mit Excel zu bearbeiten könnte man doch auch ein freundlicheres Format (xml, csv, tabbed Text,....) verwenden.
Anwendungen auf dem Server machen nur Ärger. Auf die Anwendungen auf dem Client angewiesen zu sein - geht gar nicht (es sei denn du nutzt IE ziemlich vollkommen offen).
Aber ich bleibe einfach mal bei der Frage: Wozu Excel?
-
bisher einfachste Möglichkeit, die ich kenne. Benötigt kein Excel weder auf dem Server noch auf dem Client (außer zum Anschauen):
Print |Content-Type:application/vnd.ms-excel|
Print |<table>
<tr><td>Überschrift1</td><td>Überschrift2</td></tr>
<tr><td>1</td><td>11</td></tr>
<tr><td>2</td><td>12</td></tr>
<tr><td>3</td><td>13</td></tr>
<tr><td>4</td><td>14</td></tr>
</table>|
-
Ausserdem: bei etwas komplexeren Excel-Dateien. Über Java kannst du das poi Projekt nutzen, um Excel-Dateien zu erzeugen, ohne dass Excel vorhanden ist.
The POI project consists of APIs for manipulating various file formats based upon Microsoft's OLE 2 Compound Document format using pure Java. In short, you can read and write MS Excel files using Java. Soon, you'll be able to read and write Word files using Java. POI is your Java Excel solution as well as your Java Word solution. However, we have a complete API for porting other OLE 2 Compound Document formats and welcome others to participate.
http://jakarta.apache.org/poi/index.html
-
Linux kann ich auf keinen Fall verwenden... leider...
Excel muss auch sein, da der Anwender es so will.... leider...
CSV Dateien könnte man natürlich erstellen. Aber die müsste ich ja dann wieder umwandeln in eine Excel Datei. Dafür brauch ich das Programm wieder, das ich aber nicht am Server installieren will.
Die Methode von Thomas Völk kenne ich auch schon. Allerdings kann ich dies leider auch nicht verwenden, da alle Excel Funktionen vorhanden sein müssen. Z.B. Spalten ausblenden usw.
Mit Java hab ich noch nicht großartig gearbeitet. C++ kann ich allerdings. Von daher wär das doch die beste möglichkeit, oder???
-
CSV und XML kannst Du so mit Excel öffnen. Musst nur im BS die Verknüpfung Dateiendung zu Excel herstellen.
-
Mit Java hab ich noch nicht großartig gearbeitet. C++ kann ich allerdings. Von daher wär das doch die beste möglichkeit, oder???
Im Prinzip ja. Viele Organisationen verbieten aber nicht-Lotus c-code auf ihren Domino-Servern.
Am Rande:
Valentin Cretaz hat gerade ein Blogeintrag zu Java-Com bridging geschrieben.
http://radio.javaranch.com/val/2005/04/07/1112864761792.html
Wenn ich ihn richtig verstehe, geht es ihm darum das file nicht auf Festplatte abzulegen, sondern direkt als Stream an den Browser des Users abzuliefern. Letzeres scheint mit poi nicht zu gehen. Guter Punkt. Sollte auch mit C/++ com Integration gehen.
-
Hm...
POIFS und der Blog von Valentin Cretaz ist zwar interessant. Allerings steig ich nicht durch, wenn ich ganz erhlich bin .... *schäm*
Ich glaub es ist das beste, wenn ich das ganze mit XML-Dokumenten mache, die dann mit Excel geöffnet werden.
Hat hierfür jemand vielleicht kurz ne Seite wo ich mich einlesen kann? Evtl. sogar ein Beispiel wie die XML-Datei auszusehen hat?
Vielen Vielen Dank für eure Unterstützung...
-
speicher mal im Excel eine Datei im XML-Format, dann siehst Du wie die Datei aussieht. Excel bringt allerdings viel Overhead mit, denn Du nicht benötigst. Eine Anleitung findest Du http://members.aol.com/xmldoku/
-
Ich hab jetzt ne schöne Internet Seite gefunden in der das Thema Poi beschrieben wird.
http://www.cs.fh-aargau.ch/~gruntz/courses/sem/ss04/poi.pdf
Man bin ich unentschlossen... Aber gleich eine Excel Datei wäre einfach schöner :P
Mit der Seite wär das mit POI denke ich kein Thema mehr.
Aber wie bekomme ich die Packages wie z.B. org.apache.poi.hssf.eventmodel in den Code rein. Da bekomme ich leider die Fehlermeldung das das Package nicht im import gefunden wurde...
-
Ich glaub es ist das beste, wenn ich das ganze mit XML-Dokumenten mache, die dann mit Excel geöffnet werden.
Hat hierfür jemand vielleicht kurz ne Seite wo ich mich einlesen kann? Evtl. sogar ein Beispiel wie die XML-Datei auszusehen hat?
Ich glaube, du unterschätzt das etwas. Ich kann mich aber auch irren.
auf der Seite
http://www.microsoft.com/office/xml/default.mspx
gibts einen Link, der zum Download der XML Reference Schemas führt.
-
Ciao
wenn du VBScript / JScript (also IE und Intranet) erlaubst, kannst du auch auf diese weise ein Excel beim Client erzeugen (muss da natürlich vorhanden sein). Du könntest dann mit einem Agenten den Code ausprinten, welcher danach im IE ausgeführt wird. Bei uns ist sowas im Einsatz (Auszug) :
Function putScript()
Print |<SCRIPT LANGUAGE="VBScript">|
Print |<!-- |
Print |Function OpenExcel|
Print |Dim xl|
Print |Set xl = CreateObject("Excel.Application")|
Print |xl.Workbooks.Open "http://| & docProfile.ProfCLWEBPath(0) |/ConfigViewFilterOE/$file/| & sTempl & |"|
Print |set oData = xl.Sheets("Daten")|
Print |oData.Select|
' -- Daten aus der Liste in ein Array einlesen (bessere Performance beim abfüllen in Excel)
Print |dim arr(| & i & |,11)|
Forall lines In dataList
Print lines
End Forall
'-- Bereich für Daten im Excel-Sheet markieren
Print |dim rng|
Print |set rng = xl.Activesheet.Range("A2").Resize(| & i & |,12)|
'-- Werte einfügen
Print |rng.value = arr|
Print |xl.Sheets("Auswertung").Select|
Print |xl.Visible = True|
Print |set oAuswertung = xl.Sheets("Auswertung")|
Print |oAuswertung.Select|
Print |oAuswertung.cells(1,1) = "Auslastungs Pivot | & sVwTypeName & | Stand: | & Format$(Now) & """"
If sFilter = "0" Then
Print |oAuswertung.cells(2,1) = "Filter: none"|
Else
Print |oAuswertung.cells(2,1) = "Filter: | & Implode(Split(sOE, "~") , ", " ) & """"
End If
Print |set oPivot = xl.Sheets("Auswertung")|
Print |oPivot.Select|
Print |With oPivot|
Print | .Range("A1").Select|
Print | .PivotTables("PivotTable1").RefreshTable 'Pivotabelle aktualisieren (Name kontrollieren)|
Print |End With|
Print |End Function|
Print | -->|
Print |</SCRIPT>|
Print |<SCRIPT LANGUAGE="Javascript">|
Print |OpenExcel();|
Print |history.go(-2);|
Print |</SCRIPT>|
End Function
Diese Funktion öffnet zuerst ein Template auf dem Server und füllt dann die Daten ab. Wenn du aber mal das Excel Objekt hast, kannst du damit Clientseitig eigentlich alles anstellen...
bye z
-
Einwandfrei. Mit VB Script gehts am leichtesten. Es muss zwar ActiveX aktiviert sein, aber immerhin. Es funktioniert. Juhu!
DANKE