2012-11-06 22 views
0

我需要將列表數據下載爲.xls文件。我的控制器代碼如下。將數據下載爲.xls格式文件

 [HttpGet] 
     public void AttendeeListToExport() 
     { 
      string campaign_id = string.Empty; 
      campaign_id = ((MemberProfile)HttpContext.Current.Profile).HOWCampaignID; 
      AutoCRM.Services.HOW.Attendee.Manage manage = new AutoCRM.Services.HOW.Attendee.Manage(); 
      DataSet lst = manage.AttendeeListToExport(campaign_id); 
      if (lst != null) 
      { 
       if (lst.Tables[0].Rows.Count > 0) 
       { 
        DataTable dt = lst.Tables[0]; 
        // Export all the details to Excel 
        string filename = campaign_id + "_" + DateTime.Now.ToString("ddMMyyyy") + ".xls"; 
        Export objExport = new Export(); 
        objExport.ExportDetails(dt, Export.ExportFormat.Excel, filename); 
       } 
      } 
     } 

js代碼

$('#exportToExcel').on("click", function() { 
     alert('hi'); 
     $.ajax({ 
      url: "/api/Attendee/AttendeeListToExport", 
      async: true, 
      cache: false, 
      success: function (result) { 
       alert(result); 
      } 
     }); 
    }); 

代碼執行正確,但文件未下載

回答

0

如果你的控制器動作返回FileResult ,你可以從你的javascript函數下載這個E本:

$('#exportToExcel').on("click", function() { 
    window.open("/api/Attendee/AttendeeListToExport", "_blank"); 
}); 
+0

_blank。此錯誤獲取 – user1551433

+0

window.open(「/ api/Attendee/AttendeeListToExport」);這是越來越 – user1551433

+0

對不起,這是由於我的代碼中的錯字(忘記「),現在已經修復了,謝謝你指出。 – Marius

0

用ajax無法下載文件。您必須使用隱藏的iframe或直接鏈接到文件。

+0

請給我示例代碼 – user1551433

+0

這裏是一個教程http://encosia.com/ajax-file-downloads-and-iframes/沒有定義 – donebizkit

2

您可以在以下兩種方式通過JavaScript下載文件:

使用HiddenIFrame:

var downloadURL = function downloadURL(url) { 
    var iframe; 
    var hiddenIFrameID = 'hiddenDownloader'; 
    iframe = document.getElementById(hiddenIFrameID); 
    if (iframe === null) { 
     iframe = document.createElement('iframe'); 
     iframe.id = hiddenIFrameID; 
     iframe.style.display = 'none'; 
     document.body.appendChild(iframe); 
    } 
    iframe.src = url; 
} 

使用jQuery:

$('a').click(function(e) { 
    e.preventDefault(); //stop the browser from following 
    window.location.href = 'uploads/file.doc'; 
}); 

<a href="no-script.html">Download now!</a>