2009-05-15 15 views
5

Ich habe nach einer guten Excel-Dateigenerierungsklasse gesucht und muss noch eine finden - meine Nummer eins Problem ist, dass ich obwohl ich die exportierte Datei in Excel öffnen kann (läuft 2007), bekomme ich immer eine Warnung, dass "die Datei in einem anderen Format als die Dateiendung ist".PHP Microsoft Excel Dateigenerierung/Export Klasse

Ich habe festgestellt, dass der Excel-Export in phpMyAdmin sogar die oben genannte Warnmeldung generiert.

Welchen Code verwenden andere Benutzer für diese allgemeine Anforderung?

Schnellupdate Wenn ich die Dateierweiterung meiner generierten Excel-Datei als XML einstelle, wird sie im Browser geöffnet (obwohl ich die richtigen Header sende), aber wenn ich die XML-Datei speichern und dann öffnen möchte aus Excel funktioniert es ohne Warnungen! Leider ist das für die Benutzer problematischer, als wenn Sie einfach nur auf "Weiter" klicken und die Warnung erhalten, die ich erhalte. Noch mehr Ideen?

Antwort

2

Ich habe entdeckt, dass die folgende, im Rahmen der XML-Deklaration in meiner erzeugte Excel-Datei hinzufügen, sorgt für Excel die Datei mit einer XML-Dateierweiterung öffnet (und nicht im Web-Browser):

<?mso-application progid=\"Excel.Sheet\"?> 

Ich bin auch die folgenden Header in pHP-Einstellung:

// deliver header (as recommended in php manual) 
header('Content-Type: application/vnd.ms-excel; charset=UTF-8'); 
header('Content-Disposition: attachment; filename="' . $filename . '.xml"'); 
2

Verwenden Spreadsheet_Excel_Writer von PEAR

oder

die Datei zu CSV format schreiben.
Aber Microsoft von csv Zeichnet Verständnis: Ein Semikolon (;) als Trenner

+0

ich einen Blick auf die PEAR-Paket genommen haben, sieht es aus wie eine Menge mehr Arbeit zu implementieren - und ich bin nicht sicher, dass es mein Problem beheben wird , die nur Excel 2007 scheint. – BrynJ

+0

Verwenden Sie nicht das PEAR-Paket, es ist veraltet! Es ist seit 2006 in der Betaversion. Verwenden Sie stattdessen PHPExcel !!! – markus

0

die Datei in einem anderen Format, das die Dateierweiterung

Haben Sie mit einer anderen Datei, um die Datei versucht, Speichern Erweiterung? Wie "foo.xlsx" anstelle von "foo.xls".

+0

Ich habe ja - xls, xlsx und xml - alle mit dem gleichen Ergebnis. Ich schätze, es ist in irgendeiner Weise falsch, aber ich bin mir nicht sicher, was genau. – BrynJ

+0

Ok, nur um zu den oben genannten hinzuzufügen - in der Tat, wenn ich die Dateierweiterung als XML einstellen, wird es im Browser geöffnet (obwohl ich die richtigen Header sende).Wenn ich die XML-Datei speichern und dann aus Excel öffnen möchte, funktioniert sie ohne Warnungen! Leider ist das für die Benutzer problematischer, als wenn Sie einfach nur auf "Weiter" klicken und die Warnung erhalten, die ich erhalte. – BrynJ

2

Sie deaktivieren auch die Dialogbox, regedit

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security] 
“ExtensionHardening”=dword:00000000 
  • Start -> Ausführen -> regedit
  • Gehen Sie auf "HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 12.0 \ Excel \ SECURITY"
  • New DWORD
  • Typ „ExtensionHardening“ als Namen und den Wert 0
+0

Interessant, aber nicht wirklich eine praktikable Lösung für eine webbasierte App obwohl +1 sowieso. –

+0

+1 - Ich kann dies tatsächlich verwenden, da ich diese Funktionalität im Administrationsbereich meiner Web-App zur Verfügung stelle, so dass die Benutzer endlich sind (es ist eine maßgeschneiderte App). – BrynJ

8
+0

Danke für den Link - es sieht aus wie eine sehr umfassende Klasse, um ehrlich zu sein, es ist weit über meine Anforderungen hinaus. – BrynJ

+1

Sie sollten keine Angst vor der Größe haben, wenn die Qualität gut ist. Viel besser als die veraltete PEAR-Klasse. – markus

Verwandte Themen