Đặt loại mime cho tài liệu excel


361

MS Excel có các loại MIME được quan sát sau đây:

  • application/vnd.ms-excel (chính thức)
  • 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)

Có một loại nào sẽ hoạt động cho tất cả các phiên bản không? Nếu không, chúng ta có cần thiết lập riêng response.setContentType()với từng loại mime này không?

Ngoài ra, chúng tôi sử dụng phát trực tuyến tệp trong ứng dụng của mình để hiển thị tài liệu (không chỉ excel - bất kỳ loại tài liệu nào). Khi làm như vậy, làm thế nào chúng ta có thể giữ lại tên tệp nếu người dùng chọn lưu tệp - hiện tại, tên của servlet hiển thị tệp xuất hiện dưới dạng tên mặc định.


4
Tổng quát hơn, cách tốt nhất để tìm hiểu những gì MS mình nghĩ là đúng loại là để tìm thấy một hộp với phiên bản mới nhất cài đặt và xem HKCR/.xls's Content Typegiá trị trong registry.
Rup

3
"application / vnd.ms-office" là một loại mime khác cho các tệp XLS.
herrjeh42

application/vnd-xlscũng hoạt động cho .xlscác tập tin.
mbomb007

Vui lòng tham khảo bài đăng này để biết danh sách đầy đủ các loại MIME và các phần mở rộng tệp excel có liên quan.
RBT

Câu trả lời:


344

Tôi tin rằng loại MIME tiêu chuẩn cho các tệp Excelapplication/vnd.ms-excel.

Về tên của tài liệu, bạn nên đặt tiêu đề sau trong phản hồi:

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

16
sự khác biệt giữa ứng dụng / msexcel và ứng dụng / vnd.ms-excel là gì?
Thabiso Mofokeng

6
Nếu bạn muốn hiển thị tài liệu trong trình duyệt (nếu được hỗ trợ) thì Xử lý nội dung cần phải là 'nội tuyến'. Xem stackoverflow.com/questions/1395151/ cấp
flash

2
Bạn nên tránh sử dụng Xử lý nội dung trong HTTP, nó có các cân nhắc về bảo mật. Bố trí nội dung chỉ dành cho email. Xem stackoverflow.com/questions/1012437 để biết thêm thông tin.
Dzmitry Lazerka

Lưu ý rằng đối với định dạng tệp OpenSML Excel XLSX, một loại Mime khác được xác định, xem danh sách đầy đủ tại liên kết được cung cấp.
Oskar Berggren

@DzmitryLazerka thay thế "an toàn" cho bố trí nội dung là gì? Theo liên kết của bạn, sau đó liên kết trong câu trả lời đó, rồi liên kết trong tài liệu đó, đưa chúng ta đến đây: tools.ietf.org/html/rfc6266#section-4.3 . Theo như tôi có thể nói, mối quan tâm bảo mật chỉ liên quan đến tên tệp do người dùng cung cấp - nếu chúng có chứa các ký tự không phải là chữ Latinh hoặc các ký tự không hợp lệ trên một số HĐH. Tất cả các trình duyệt chính đều có biện pháp bảo vệ chống lại những lo ngại này. Windows và Mac cũng đặt cờ trên một tệp cho biết rằng nó đến từ internet, bật lên một cảnh báo khi bạn cố mở nó.
Kip

170

Đánh thức một chủ đề cũ ở đây tôi thấy, nhưng tôi cảm thấy sự thôi thúc thêm định dạng .xlsx "mới".

Theo http://filext.com/file-extension/XLSX , phần mở rộng cho .xlsx là application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. Nó có thể là một ý tưởng tốt để bao gồm nó khi kiểm tra các loại mime!


1
Đây là những gì tôi đang tìm kiếm cảm ơn, cần thiết để hỗ trợ định dạng mới nhất cũng như trước đây.
Lee

42

Bạn phải luôn sử dụng loại MIME bên dưới nếu bạn muốn phân phát tệp excel ở định dạng xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

13

Đối với .xls sử dụng loại nội dung sau

application/vnd.ms-excel

Đối với phiên bản Excel 2007 trở lên định dạng tệp .xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

8

Tôi đã thiết lập loại MIME từ mã .NET như bên dưới -

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

Ứng dụng của tôi tạo excel bằng SDK OpenXML. Loại MIME này hoạt động -

vnd.openxmlformats-officedocument.spreadsheetml.sheet

2

Tôi đang sử dụng EPPlus để tạo tệp excel .xlsx (định dạng OpenXML). Để gửi tệp excel này dưới dạng tệp đính kèm trong email, tôi sử dụng loại MIME sau và nó hoạt động tốt với tệp được tạo bởi EPPlus và mở đúng cách trong bản xem trước ứng dụng thư 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

Đối với bất cứ ai vẫn còn vấp ngã với điều này sau khi sử dụng tất cả các loại MIME có thể được liệt kê trong câu hỏi:

Tôi đã thấy rằng iMac có xu hướng cũng ném một loại "văn bản / xls" MIME cho các tệp XLS Excel, hy vọng điều này sẽ giúp ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.