Ustawienie typu MIME dla dokumentu Excel

361

MS Excel ma następujące zaobserwowane typy MIME:

  • application/vnd.ms-excel (urzędnik)
  • application/msexcel
  • application/x-msexcel
  • application/x-ms-excel
  • application/x-excel
  • application/x-dos_ms_excel
  • application/xls
  • application/x-xls
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx)

Czy jest jakiś typ, który działałby dla wszystkich wersji? Jeśli nie, to czy musimy ustawić response.setContentType()osobno dla każdego z tych typów mimów?

Ponadto w naszej aplikacji korzystamy z przesyłania strumieniowego plików w celu wyświetlania dokumentu (nie tylko programu Excel - dowolnego typu dokumentu). W jaki sposób możemy zachować nazwę pliku, jeśli użytkownik zdecyduje się zapisać plik - obecnie nazwa serwletu renderującego plik pojawia się jako nazwa domyślna.

Subramańska
źródło
4
Mówiąc bardziej ogólnie, najlepszym sposobem, aby dowiedzieć się, co myślą sami MS jest odpowiedniego typu jest znaleźć pudełko z najnowszej wersji zainstalowanego i spojrzeć na HKCR/.xls„s Content Typewartości w rejestrze.
Rup
3
„application / vnd.ms-office” to kolejny typ MIME dla plików XLS.
herrjeh42
application/vnd-xlsdziała również dla .xlsplików.
mbomb007
Zapoznaj się z tym postem, aby uzyskać pełną listę typów MIME i powiązanych rozszerzeń plików programu Excel.
RBT

Odpowiedzi:

344

Uważam, że standardowy typ MIME dla plików Excel to application/vnd.ms-excel.

Jeśli chodzi o nazwę dokumentu, w odpowiedzi należy ustawić następujący nagłówek:

header('Content-Disposition: attachment; filename="name_of_excel_file.xls"');
jbochi
źródło
16
jaka jest różnica między application / msexcel a application / vnd.ms-excel?
Thabiso Mofokeng
6
Jeśli chcesz wyświetlić dokument w przeglądarce (jeśli jest obsługiwany), wówczas Content-Disposition musi być „inline”. Zobacz stackoverflow.com/questions/1395151/…
flash
2
Należy unikać używania Content-Disposition w HTTP, ponieważ ma to względy bezpieczeństwa. Dyspozycja treści dotyczy tylko wiadomości e-mail. Aby uzyskać więcej informacji, zobacz stackoverflow.com/questions/1012437 .
Dzmitry Lazerka
Uwaga: w przypadku formatu pliku OpenXML Excel XLSX zdefiniowano inny typ Mime, patrz pełna lista pod podanym linkiem.
Oskar Berggren,
@DzmitryLazerka jaka jest „bezpieczna” alternatywa dla dysponowania treścią? Po twoim linku, następnie link w tej odpowiedzi, a następnie link w tym dokumencie, prowadzi nas tutaj: tools.ietf.org/html/rfc6266#section-4.3 . O ile mi wiadomo, problem bezpieczeństwa dotyczy tylko nazw plików podanych przez użytkowników - jeśli zawierają znaki spoza alfabetu łacińskiego lub znaki, które są nieprawidłowe w niektórych systemach operacyjnych. Wszystkie główne przeglądarki mają zabezpieczenia przed tymi obawami. Windows i Mac również ustawiają flagę na pliku wskazującą, że pochodzi on z Internetu, wyświetlając ostrzeżenie przy próbie jego otwarcia.
Kip
170

Rozbudzam tutaj stary wątek, ale widzę potrzebę dodania „nowego” formatu .xlsx.

Według http://filext.com/file-extension/XLSX rozszerzenie .xlsx to application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. Dobrym pomysłem może być uwzględnienie go podczas sprawdzania typów MIME!

Karlis Rode
źródło
1
To było to, czego szukałem dzięki, potrzebne do obsługi najnowszego formatu, a także poprzedniego.
Lee,
42

Powinieneś zawsze używać poniżej typu MIME, jeśli chcesz wyświetlać plik Excel w formacie xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 
Siva Kranthi Kumar
źródło
13

Dla .xls użyj następującego typu zawartości

application/vnd.ms-excel

Dla programu Excel 2007 w wersji a przede .xlsx formacie plików

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Dulith De Costa
źródło
8

Ustawiałem typ MIME z kodu .NET, jak poniżej -

File(generatedFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

Moja aplikacja generuje excel przy użyciu OpenXML SDK. Ten typ MIME działał -

vnd.openxmlformats-officedocument.spreadsheetml.sheet
Divyans Mahansaria
źródło
2

Korzystam z EPPlus do generowania pliku Excel .xlsx (oparty na formacie OpenXML). Do wysyłania tego pliku Excela jako załącznika w wiadomości e-mail używam następującego typu MIME i działa on dobrze z plikiem wygenerowanym przez EPPlus i otwiera się poprawnie w podglądzie klienta poczty ms-outlook.

string mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
System.Net.Mime.ContentType contentType = null;
if (mimeType?.Length > 0)
{
    contentType = new System.Net.Mime.ContentType(mimeType);
}
Vishwajit G
źródło
0

Dla każdego, kto nadal się z tym boryka po użyciu wszystkich możliwych typów MIME wymienionych w pytaniu:

Zauważyłem, że iMacs zwykle rzucają typ MIME „text / xls” dla plików Excel XLS, mam nadzieję, że to pomoże.

be_es
źródło