Export HTML table to Excel JavaScript function add select file name

VSP picture VSP · Jun 18, 2012 · Viewed 28.3k times · Source

I have the following function that exports an HTML to excel:

function generateexcel(tableid) {
  var table= document.getElementById(tableid);
  var html = table.outerHTML;
  window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html));
}

The problem is that, i can't put a specific file name to save as so the user gets something like:

Do you want to save %3Ctable%20id%3D%22tableRslts%22%20tabindex%3D%2235%22%20 file?

And the saved file is like:

IytvT8Jo.xls.part.xls (at least in Firefox which is the target browser we will use)

How would you fix this?

Answer

David Mulder picture David Mulder · Jul 3, 2012

There are two options which you could look into:

  • Filesaver API is new 'HTML5' functionality allowing /exactly/ this. There is just one small problem: the relevant part isn't supported yet in firefox. If you want to use this there is a nice wrapper library which makes this easier for you: filesaver.js
  • Downloadify is a flash tool which is created for exactly this as well, you can find it here. ('Disadvantage': flash)