Establecer el tipo mime para el documento de Excel


361

MS Excel tiene los siguientes tipos MIME observados:

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

¿Hay algún tipo que funcione para todas las versiones? Si no es así, ¿tenemos que configurar response.setContentType()cada uno de estos tipos de mimos individualmente?

Además, utilizamos la transmisión de archivos en nuestra aplicación para mostrar documentos (no solo Excel, cualquier tipo de documento). Al hacerlo, ¿cómo podemos conservar el nombre de archivo si el usuario opta por guardar el archivo? Actualmente, el nombre del servlet que representa el archivo aparece como el nombre predeterminado.


44
En términos más generales, la mejor manera de averiguar qué creen los propios MS que es el tipo correcto es encontrar un cuadro con la última versión instalada y observar HKCR/.xlsel Content Typevalor en el registro.
Rup

3
"application / vnd.ms-office" es otro tipo mime para archivos XLS.
herrjeh42

application/vnd-xlsTambién funciona para .xlsarchivos.
mbomb007

Consulte esta publicación para obtener una lista completa de los tipos MIME y las extensiones de archivo de Excel relacionadas.
RBT

Respuestas:


344

Creo que el tipo MIME estándar para archivos Excel es application/vnd.ms-excel.

Con respecto al nombre del documento, debe establecer el siguiente encabezado en la respuesta:

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

16
¿Cuál es la diferencia entre application / msexcel y application / vnd.ms-excel?
Thabiso Mofokeng

66
Si desea mostrar el documento dentro del navegador (si es compatible), Content-Disposition debe estar 'en línea'. Ver stackoverflow.com/questions/1395151/…
flash

2
Debe evitar el uso de Content-Disposition en HTTP, tiene consideraciones de seguridad. La disposición de contenido es solo para correo electrónico. Consulte stackoverflow.com/questions/1012437 para obtener más información.
Dzmitry Lazerka

Tenga en cuenta que para el formato de archivo OpenXML Excel XLSX se define un tipo Mime diferente, consulte la lista completa en el enlace proporcionado.
Oskar Berggren

@DzmitryLazerka, ¿cuál es la alternativa "segura" a la disposición de contenido? Siguiendo su enlace, luego el enlace en esa respuesta, luego el enlace en ese documento, nos lleva a aquí: tools.ietf.org/html/rfc6266#section-4.3 . Por lo que puedo decir, la preocupación de seguridad solo involucra los nombres de archivo proporcionados por los usuarios, si contienen caracteres no latinos o caracteres que no son válidos en algunos sistemas operativos. Todos los principales navegadores tienen salvaguardas contra estas preocupaciones. Windows y Mac también establecen un indicador en un archivo que indica que proviene de Internet, y aparece una advertencia cuando intenta abrirlo.
Kip

170

Aquí veo un hilo antiguo, pero sentí la necesidad de agregar el "nuevo" formato .xlsx.

De acuerdo con http://filext.com/file-extension/XLSX, la extensión para .xlsx es application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. ¡Puede ser una buena idea incluirlo cuando se buscan tipos de mimo!


1
Esto era lo que estaba buscando, gracias, necesitaba admitir el último formato y el anterior.
Lee

42

Siempre debe usar el siguiente tipo MIME si desea servir un archivo de Excel en formato xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

13

Para .xls use el siguiente tipo de contenido

application/vnd.ms-excel

Para la versión Excel 2007 y los formatos de archivo .xlsx superiores

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

8

Estaba configurando el tipo MIME del código .NET como se muestra a continuación:

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

Mi aplicación genera excel usando OpenXML SDK. Este tipo MIME funcionó:

vnd.openxmlformats-officedocument.spreadsheetml.sheet

2

Estoy usando EPPlus para generar un archivo Excel .xlsx (basado en el formato OpenXML). Para enviar este archivo de Excel como archivo adjunto en un correo electrónico, uso el siguiente tipo MIME y funciona bien con el archivo generado por EPPlus y se abre correctamente en la vista previa del cliente de correo 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);
}

0

Para cualquiera que todavía esté tropezando con esto después de usar todos los tipos MIME posibles enumerados en la pregunta:

He descubierto que los iMacs tienden a lanzar también un tipo MIME de "text / xls" para archivos XLS Excel, espero que esto ayude.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.