2013-02-28 33 views
5

tôi có mã này để trích xuất một bảng vào máy tính trong một file .xls:Cách tạo tệp XLS thực trên asp.net C#?

// I have a string which contains HTML table codes, named as excelTable 

HttpResponse response = HttpContext.Current.Response; 
response.Clear(); 
response.AddHeader("Content-Disposition", String.Format("Attachment;Filename=file.xls",)); 
response.Buffer = true; 
response.ContentEncoding = System.Text.Encoding.Default; 
response.ContentType = "application/vnd.ms-excel"; 
response.Write(excelTable); 
response.End(); 

Và tôi đã thấy rằng đây không phải là một tập tin .xls thực. Tôi có thể mở nó trong Notepad và xem mã bảng standart html của tôi.

Bây giờ tôi hiểu rằng việc xác định ContentType là không đủ. Vậy tôi có thể làm gì khác để tạo tệp .xls hoặc .xlsx thuần túy? Hoặc tôi chắc chắn nên sử dụng Excel Thư viện như OpenXML, Interop, vv?

+1

http://epplus.codeplex.com/ – AakashM

Trả lời

4

Thực tế Dữ liệu XLS/XLSX phải được gửi lại - tức là dữ liệu được tạo bằng thư viện (ví dụ: EEPlus) hoặc nguồn phù hợp khác.

Phương pháp hack/tiếp cận phổ biến này hoạt động vì Excel "biết cách đọc HTML". Nó không thực sự biến HTML thành XSL/XLSX, mặc dù nó có thể được lưu dưới dạng bảng tính mới sau khi được tải bởi Excel.

Thay đổi loại nội dung sẽ không có hiệu lực trên dữ liệu và thay vào đó sẽ dừng phương pháp này hiệu quả: loại nội dung được sử dụng để kết hợp chương trình (ví dụ: Excel) sẽ được sử dụng để mở/đọc dữ liệu.

Vì vậy, có: để tạo tài liệu thực XLS/XLSX, hãy sử dụng thư viện.

Các vấn đề liên quan