Steel: Online Exceldatei generieren.

Hi!

Ich hab da ein laestiges Problem:

Wir muessen online (per ASP) einen Report als Excelformat bereitstellen. Das ist soweit auch kein Problem. Einfach eine CSV Datei ausgeben oder im Header der Datei Excel als Datentyp mitgeben und eine Tabelle im HTMLbody ausgeben sind recht einfache und Ressourcen schonende Loesungen.

Das Problem: Diese Reporte werden von Leuten in ganz Europa gelesen. Wie der erfahrene Programmierer weiss gibt es da ein kleine Abweichung beim Schreiben von Dezimalzahlen. Dazu ist Excel ja so schlau und konvertiert fleissig Zahlen in alles moegliche. Als Beispiel sei mal 1.05 erwaehnt. Wenn ich den Wert 1.05 in einer Zelle habe dann ist das in einem Excel dessen Rechner z.B. auf UK Format laueft z.B. 1 Euro und 5 Cent. Auf einem Deutschen allerdings der 1. Mai... Schreibe ich 1,05 dann hab ich natuerlich mit deutschem Format 1 Euro und 5 Cent aber auf einem britischen einen String, mit dem er nicht viel anfangen kann.

Hat irgendwer eine Idee, wie man so ein Excelfile korrekt erstellen kann, ohne dass man alles in 2 verschiedenen Formaten ausgeben muss, je nach Format, was der User auswaehlt? (bloed genug, weil man das den Usern schon wieder erklaeren muss...)

Ich kann zwar auch Code zum Formatieren in die Zellen schreiben, aber das wird ja noch schlimmer, denn ein deutsches Excel versteht unabhaengig von den Formateinstellungen des Rechners keine englischen Befehle und ein englisches keine deutschen. Ich will gar nicht erst wissen, welche Laender noch eigene Befehle haben. Wir haben so schon immer genug Spass, wenn uns ein Kollege mit deutschem Office ein Programm schickt.

An den Einstellungen der Rechner und Office kann ich natuerlich nichts aendern.

--
Trau Dich!
 
  1. Hi,
    wenn du auf Diagramme, Bilder und sonstige spezielle Funktionen in Excel verzichten kannst, dann koenntest du SpreadSheetML verwenden, das ist ein XML Dialekt, der das Row/Column Prinzip von Excel abbildet. Wir haben das bei uns mit Office 2003 ausprobiert, funktioniert soweit ganz gut.
    Gruss aus LA
    Frank

    1. Hiho!

      Grafiken und Zeug sind uninteressant. Bisher reicht CSV total aus, wenn es nicht Konvertierungsprobleme gaebe.

      Danke fuer den Hint.

      --
      Trau Dich!
       
    2. Hiho! :)

      Danke! Meine Tests sehen gut aus.

      <Cell><Data ss:Type="Number">1.05</Data></Cell>

      liefert tatsaechlich 1.05 mit UK Einstellungen und 1,05 mit DE Einstellungen. Dass ich nicht selbst auf XML gekommen bin...

      Bisher bin ich satisfied.

      Das ganze wird dadurch etwas aufgeblasen, aber ich glaube damit koennen wir leben.

      --
      Trau Dich!
       
  2. Wir muessen online (per ASP) einen Report als Excelformat bereitstellen. Das ist soweit auch kein Problem. Einfach eine CSV Datei ausgeben oder im Header der Datei Excel als Datentyp mitgeben und eine Tabelle im HTMLbody ausgeben sind recht einfache und Ressourcen schonende Loesungen.

    Und zusätzlich kannst du nicht sicher sein, dass jedes Excel (oder ein alternatives Programm wie Openoffice) genau das macht, was du willst. Voralem solltest du bedenken, nur weil es das aktuelle Excel "richtig" macht, kann sich das in der nächsten Version ändern.

    Per PHP gäbe es die passende PEAR-Klasse, die mit ein wenig gepfrimel auch ohne PEAR lauffähig ist.
    Per ASP ist mir nichts bekannt. Evtl. wäre es möglich, ein Excel zu installieren und per Kommandozeile zu steuern. Dann hast du in jedem Fall ein echtes Excel-Sheet.

    Alternativ geht das auch per OpenOffice, einem virtuellen Framebuffer (falls der Server kein Windows kenn).

    1. Hi!

      Und zusätzlich kannst du nicht sicher sein, dass jedes Excel (oder ein alternatives Programm wie Openoffice) genau das macht, was du willst. Voralem solltest du bedenken, nur weil es das aktuelle Excel "richtig" macht, kann sich das in der nächsten Version ändern.

      Per PHP gäbe es die passende PEAR-Klasse, die mit ein wenig gepfrimel auch ohne PEAR lauffähig ist.
      Per ASP ist mir nichts bekannt. Evtl. wäre es möglich, ein Excel zu installieren und per Kommandozeile zu steuern. Dann hast du in jedem Fall ein echtes Excel-Sheet.

      Alternativ geht das auch per OpenOffice, einem virtuellen Framebuffer (falls der Server kein Windows kenn).

      Alternative Programme zu Excel oder Office gibts hier nicht. (is eher ne Intranetloesung) Und auf dem Server kann man auch nichts installieren. Ich denke auch das wuerde nichts helfen, denn selbst wenn ich ein echtes Excelfile habe, wird das auch misinterpretiert. Bei unseren Onlineanwendungen kann ich den User zwingen, alles so einzugeben wie ich es haben will. Ein Datum lassen wir z.B. niemals eingeben, sondern nuer ueber Kalender waehlen. Sonst waer das Chaos schnell extrem gross. Nur der umgekehrte Weg is halt wirklich problematisch...

      --
      Trau Dich!
       
  3. Hoi.

    Leider kein ASP, sondern Perl:

    http://search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel-2.25/lib/Spreadsheet/WriteExcel.pm

    Ein Kollege war davon recht angetan. Obs Dein spezifisches Problem zufriedenstellend löst, müsste geprüft werden.

    Grüße

    1. Hoi.

      Leider kein ASP, sondern Perl:

      http://search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel-2.25/lib/Spreadsheet/WriteExcel.pm

      Ein Kollege war davon recht angetan. Obs Dein spezifisches Problem zufriedenstellend löst, müsste geprüft werden.

      Ich werde es mir mal anschauen. Vielleicht trifft mich ein Inspirationspartikel, aber Perl faellt flach. Kein Microsoft, keine Existenz.

      --
      Trau Dich!