Excel belgesi için mime türünü ayarlama


361

MS Excel, aşağıdaki gözlemlenen MIME türlerine sahiptir:

  • application/vnd.ms-excel (resmi)
  • 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)

Tüm sürümler için kullanılabilecek herhangi bir tür var mı? Değilse response.setContentType(), bu mime türlerinin her birini ayrı ayrı ayarlamamız gerekir mi?

Ayrıca, belgeyi görüntülemek için uygulamamızda dosya akışını kullanıyoruz (sadece excel değil - herhangi bir belge türü). Bunu yaparken, kullanıcı dosyayı kaydetmeyi seçerse dosya adını nasıl koruyabiliriz - şu anda dosyayı oluşturan sunucu uygulamasının adı varsayılan ad olarak görünür.


4
Daha genel olarak iyi yolu, MS kendilerini doğru tip en geç yüklü sürümü ve görünüme sahip bir kutu bulmaktır olduğunu düşünüyorum ne olduğunu öğrenmek için HKCR/.xlsbireyin Content Typekayıt değeri.
Rup

3
"application / vnd.ms-office", XLS dosyaları için başka bir mime türüdür.
herrjeh42

application/vnd-xlsayrıca .xlsdosyalar için çalışır .
mbomb007

MIME türlerinin ve ilgili excel dosya uzantılarının tam listesi için lütfen bu gönderiye bakın .
RBT

Yanıtlar:


344

Excel dosyaları için standart MIME türünün olduğuna inanıyorum application/vnd.ms-excel.

Dokümanın adı ile ilgili olarak, yanıtta aşağıdaki başlığı ayarlamanız gerekir:

header('Content-Disposition: attachment; filename="name_of_excel_file.xls"');

16
application / msexcel ve application / vnd.ms-excel arasındaki fark nedir?
Thabiso Mofokeng

6
Belgeyi tarayıcıda görüntülemek istiyorsanız (destekleniyorsa) İçerik Düzenleme 'satır içi' olmalıdır. Bkz. Stackoverflow.com/questions/1395151/…
flash

2
HTTP'de Content-Disposition kullanmaktan kaçınmalısınız, güvenlik hususları vardır. İçerik İmhası yalnızca e-posta içindir. Daha fazla bilgi için stackoverflow.com/questions/1012437 adresine bakın .
Dzmitry Lazerka

OpenXML Excel XLSX dosya biçimi için farklı bir Mime türü tanımlandığını, sağlanan bağlantıdaki tam listeye bakın.
Oskar Berggren

@DzmitryLazerka içerik düzenlemeye "güvenli" alternatif nedir? Bağlantınızı takiben, o yanıttaki bağlantı, ardından o belgedeki bağlantı bizi buraya götürür : tools.ietf.org/html/rfc6266#section-4.3 . Anlayabildiğim kadarıyla, güvenlik sorunu, kullanıcılar tarafından sağlanan dosya adlarını içeriyor - latin olmayan karakterler veya bazı işletim sistemlerinde geçersiz karakterler içeriyorsa. Tüm büyük tarayıcıların bu endişelere karşı korumaları vardır. Windows ve Mac ayrıca, bir dosyaya internetten geldiğini belirten bir bayrak ayarlayıp açmaya çalıştığınızda bir uyarı çıkarır.
Kip

171

Burada eski bir iş parçacığını uyandırırken görüyorum, ama "yeni" .xlsx biçimini ekleme dürtüsünü hissettim.

Göre http://filext.com/file-extension/XLSX .xlsx için uzantısıdır application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. Mime türlerini kontrol ederken dahil etmek iyi bir fikir olabilir!


1
Aradığım şey buydu, önceki formatın yanı sıra en son formatı da desteklemeliydim.
Lee

42

Excel dosyasını xlsx biçiminde sunmak istiyorsanız her zaman MIME türünün altında kullanmalısınız

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

13

İçin .xls aşağıdaki içerik türü kullanmak

application/vnd.ms-excel

İçin Excel 2007 sürümü ve üzeri .xlsx dosyaları formatında

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

8

MIME türünü .NET kodundan aşağıdaki gibi ayarlıyordum -

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

Uygulamam OpenXML SDK kullanarak excel üretir. Bu MIME türü çalıştı -

vnd.openxmlformats-officedocument.spreadsheetml.sheet

2

.Xlsx (OpenXML format tabanlı) excel dosyası oluşturmak için EPPlus kullanıyorum . Bu excel dosyasını e-posta eki olarak göndermek için aşağıdaki MIME türünü kullanıyorum ve EPPlus tarafından oluşturulan dosyayla iyi çalışıyor ve ms-outlook posta istemcisi önizlemesinde düzgün bir şekilde açılıyor.

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);
}

0

Soruda listelenen tüm olası MIME türlerini kullandıktan sonra hala tökezleyen herkes için:

İMacs da XLS Excel dosyaları için "text / xls" MIME türü atma eğiliminde olduğunu bulduk, bu yardımcı olur umuyoruz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.