Jonathan Solorzano
Jonathan Solorzano

Reputation: 7022

Download report from jsreport and angularjs

I'd like to know how could I make a report downloadable from my AngularJS Application?

The report is a .xlsx I can post the data, but the response is: response

What I'd like is a downloadable file, or to open the .xlsx on Excel Online in other tab as in the preview.

How could I do that?

Upvotes: 0

Views: 766

Answers (2)

Jan Blaha
Jan Blaha

Reputation: 3095

I usually recommend to create a hidden form and do plain http submit to jsreport /api/report. This is the most stable way and works across all browsers.

<form method='POST' target='_blank' action='/api/report' id='jsrForm'>
    <input hidden='true' name='template[shortid]' value="41ucBgXKe"/>
    <input hidden='true' name='data[foo]' value="Hello world"/>
    <input hidden='true' name='options[Content-Disposition]' value="attachment; filename=myreport.pdf"/>
</form>



<script>
    document.getElementById("jsrForm").submit();
</script>

Upvotes: 2

garethb
garethb

Reputation: 4041

Do you have control over the response? If so, add the content-disposition header and MediaType header to the response:

For System.Net.Http.HttpResponseMessage

var response = new HttpResponseMessage{Content = ...........}
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {
                    FileName = "mydoc.xlsx"
                };    
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

For System.Net.WebClient

var client = new WebClient();
client.Headers.Add("Content-disposition", "attachment");
client.Headers.Add("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

Upvotes: 0

Related Questions