2009-05-15 16 views
5

Szukałem dobrej klasy generowania plików Excel i jeszcze jej nie znalazłem - moim problemem numer jeden jest to, że mimo tego mogę uzyskać wyeksportowany plik do otwarcia w Excelu (działa 2007), zawsze otrzymuję ostrzeżenie "plik jest w innym formacie niż rozszerzenie pliku".PHP Microsoft Excel generowanie/eksportowanie klasy klasa

Zauważyłem, że eksport Excela w phpMyAdmin nawet generuje wyżej wspomniany komunikat ostrzegawczy.

Jakiego kodu używają inni użytkownicy dla tego wspólnego wymagania?

Szybka zmiana Jeżeli ustawić rozszerzenie mojego wygenerowanym pliku Excel jako XML otwiera się w przeglądarce (chociaż ja wysyłając odpowiednie nagłówki), ale jeśli mam wybrać, aby zapisać plik XML i następnie otwarty to z Excela działa bez ostrzeżeń! Niestety, to więcej kłopotów dla użytkowników, niż po prostu kliknij "Kontynuuj mimo to" z ostrzeżeniem, które otrzymuję. Więcej pomysłów?

Odpowiedz

2

Odkryłam, że dodanie poniższych informacji, na podstawie deklaracji XML w moim wygenerowanego pliku Excel, zapewnia Excel otwiera plik z rozszerzeniem pliku XML (zamiast przeglądarki internetowej):

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

Jestem również ustawiając następujące nagłówki w php:

// 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

Zastosowanie Spreadsheet_Excel_Writer z PEAR

lub

Zapisz plik na CSV format.
Ale użyciu Microsoft prześciga zrozumienie csv: średnikiem (;) jako separatora

+0

Wziąłem spojrzeć na pakiet PEAR, wygląda o wiele więcej pracy do wykonania - plus nie jestem pewien, że to rozwiąże mój problem , co wydaje się mieć wpływ tylko na program Excel 2007. – BrynJ

+0

Nie używaj pakietu PEAR, jest przestarzały! Jest w wersji beta od 2006 roku. Zamiast tego użyj PHPExcel !!! – markus

0

plik jest w innym formacie, który rozszerzenie pliku

Czy próbowali zapisać plik z innego pliku rozbudowa? Podobnie jak "foo.xlsx" zamiast "foo.xls".

+0

Mam, tak - xls, xlsx i xml - wszystkie z tym samym wynikiem. Sądzę, że jest w jakiś sposób zniekształcony, ale nie jestem do końca pewien. – BrynJ

+0

OK, aby dodać do powyższego - w rzeczywistości, jeśli ustawię rozszerzenie pliku jako xml otwiera się w przeglądarce (mimo że wysyłam poprawne nagłówki).Jeśli zdecyduję się zapisać plik xml, a następnie otworzyć go z programu Excel, działa bez ostrzeżenia! Niestety, to więcej kłopotów dla użytkowników, niż po prostu kliknij "Kontynuuj mimo to" z ostrzeżeniem, które otrzymuję. – BrynJ

2

też wyłączyć DialogBox za pomocą regedit

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security] 
“ExtensionHardening”=dword:00000000 
  • Start -> Uruchom -> regedit
  • Przejdź do "HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 12.0 \ Excel \ Security"
  • New DWORD
  • Type „ExtensionHardening” jako nazwę i 0 jako wartość
+0

Interesujące, ale tak naprawdę nierealne rozwiązanie dla aplikacji internetowej mimo +1. –

+0

+1 - Może będę w stanie to wykorzystać, ponieważ zapewniam tę funkcję w obszarze administracyjnym mojej aplikacji internetowej, więc użytkownicy są skończeni (jest to aplikacja na zamówienie). – BrynJ

8
+0

Dzięki za link - wygląda na bardzo wszechstronną klasę, szczerze mówiąc, znacznie przekracza moje wymagania. – BrynJ

+1

Nie należy obawiać się rozmiaru, gdy jakość jest dobra. Znacznie lepsze niż używanie przestarzałej klasy PEAR. – markus

Powiązane problemy