2015-09-07 18 views
0

我以前常用的方法爲HTML表導出到Excel工作表中的以下內容:下載由出口URI沒有瀏覽器的依賴

var tableToExcel = function() { 
    var uri = 'data:application/vnd.ms-excel;base64,' 
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></br></body></html>' 
    , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) } 
    , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) } 

    return function (data, name) { 
     var ctx = { worksheet: name || 'Worksheet', table: data } 
     var url = uri + base64(format(template, ctx)); 
     return url; 
    } 
}() 

現在我要救我的本地驅動器的Excel文件,而無需使用瀏覽器。我曾嘗試以下方法

$.ajax({ 
    type: 'POST', 
    url: "ImageSaving.asmx/SaveFile", 
    data: JSON.stringify({ url: url }), 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json' 
}); 

和服務器上:

public string SaveFile(string url) 
{ 
    try 
    { 
     using (WebClient client = new WebClient()) 
     { 
      client.DownloadFile(url, filePath); 
     } 
    } 
    catch (Exception e) 
    { 
     string s = e.ToString(); 
    } 
    return ""; 
} 

但它拋出異常URI甲是不正確的。當通過瀏覽器擊中uri時,它工作正常。但我想通過沒有瀏覽器依賴性的代碼來保存它。

回答

0

1)Web客戶端通過https://i-msdn.sec.s-msft.com/dynimg/IC822539.jpg 2)Web客戶端保存文件(它會創建或重寫)C驅動器上連接到服務器

實施例:

WebClient download = new WebClient(); 
download.DownloadFile("https://i-msdn.sec.s-msft.com/dynimg/IC822539.jpg", "C:/Users/<UserName>/img.jpg"); 

Web客戶端需要一個協議前綴:HTTP://https:// ftp://