zkanoca
zkanoca

Reputation: 9928

How to make a real XLS file on asp.net c#?

I have this code to extract a table to computer in a .xls file:

// 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();

And I have seen that this is not a real .xls file. I can open it in Notepad and see my standart html table codes.

Now I understand that defining ContentType is not enough. So what else can I do to generate a pure .xls or .xlsx file? Or Should I certainly use Excel Libraries like OpenXML, Interop, etc. ?

Upvotes: 5

Views: 1106

Answers (1)

user166390
user166390

Reputation:

Actual XLS/XLSX data must be sent back - that is, data generated with a library (e.g EEPlus) or other suitable source.

This common hack/approach works because Excel "knows how to read HTML". It doesn't actually turn the HTML into XSL/XLSX, although it can be saved as new spreadsheet once loaded by Excel.

Changing the content type will have no effect on the data, and instead will effectively stop this approach from working: the content type is used for associating the program (i.e. Excel) which will be used to open/read the data.

So yes: to generate a real XLS/XLSX document, use a library.

Upvotes: 4

Related Questions