2014-07-01 4 views
4

jQuery plugin을 사용하여 HTML 표를 Excel로 내보내고 있습니다. 크롬을 사용하여 다운로드 한 파일 이름은 항상 download.xls이고 mozilla firefox은 random-string.xls입니다. 나는 날짜에 따라 파일 이름을 만들길 원합니다. 예 : 23-06-2014.xls. 다음은 jquery로 파일 맞춤 이름 다운로드

당신은 링크에 downloadhref 속성을 설정하려면보기 파일

$(document).ready(function() { 
    $("#btnExport").click(function() { 
     $("#account_table").btechco_excelexport({ 
      containerid: "account_table", 
      datatype: $datatype.Table 
     }); 
    }); 
}); 
+0

입니까? – algorhythm

+0

문서는 이것을 말합니다. 생성 된 파일 이름을 어떻게 바꿀 수 있는지는 아직 명확하지 않지만'ReturnUri : (Boolen), 사용자가 다른 다운로드 파일 이름을 지정하고 데이터 파일 URI를 사용해야하는 경우에 해당됩니다. ' –

+0

이 플러그인을 사용하는 것이 의무입니까? 그렇지 않으면 우리는 기본 자바 스크립트 코드 – V31

답변

8

에서 사용자 정의 JS 블록입니다. 예를 들어

$("#btnExport").click(function() { 
     var uri = $("#account_table").btechco_excelexport({ 
      containerid: "account_table", 
      datatype: $datatype.Table, 
      returnUri: true 
     }); 

     $(this).attr('download', 'ExportToExcel.xls') // set file name (you want to put formatted date here) 
       .attr('href', uri)      // data to download 
       .attr('target', '_blank')    // open in new window (optional) 
     ; 
    }); 
+3

을 사용할 수 있습니다. [호환성 호환성보기] (http://caniuse.com/download) ... – Mooseman

6

이 플러그인을 사용하고 싶지 않다면 이미 다른 사람이 작성한 자바 스크립트가 있습니다. 방금 파일 이름을 기본 이름 대신 사용하도록 수정했습니다.

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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></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 (table, name) { 
      if (!table.nodeType) table = document.getElementById(table) 
      var ctx = { 
       worksheet: name || 'Worksheet', 
       table: table.innerHTML 
      } 
      var blob = new Blob([format(template, ctx)]); 
      var blobURL = window.URL.createObjectURL(blob); 
      return blobURL; 
     } 
})() 

이 될 이름을 설정하는 JQuery와 :

$("#btnExport").click(function() { 
    var todaysDate = moment().format('DD-MM-YYYY'); 
    var blobURL = tableToExcel('account_table', 'test_table'); 
    $(this).attr('download',todaysDate+'.xls') 
    $(this).attr('href',blobURL); 
}); 

예 :Fiddle

참고 : 코드가 Link1 Link2

+1

코드가 잘 작동하지만 유니 코드 또는 아랍어를 사용하면 http : // jsfiddle이 중단됩니다. net/RpKr8/122 /이 코드를 수정하여 문제를 해결했습니다. 여기를 확인 http://jsfiddle.net/RpKr8/123/ –

+1

@DanishAdeel : thanks !! – V31

관련 문제