js 데이터 내 보 내기 EXCEL(대량의 데이터 내 보 내기 지원)

데 이 터 를 엑셀 로 내 보 내 는 것 은 전단 에서 비교적 자주 사용 하 는 기능 이다.필 자 는 최근 에 인터넷 에서 몇 가지 자주 사용 하 는 방법 을 수집 하여 모두 가 사용 하도록 제공 하 였 다.
1、ActiveXObject(“Excel.Application”)
이런 방법 은 IE 에서 만 사용 할 수 있다.
장점:VBA 제어 엑셀 대상 참조.(코드 가 안 돼 요.매크로 를 녹음 할 수 있어 요.)
단점:cell 대상 참조 가 너무 느 려 서 만 줄 이상 의 데이터 내 보 내기 시간 이 2 분 이 넘 습 니 다.
2.Table 방식 으로 html 파일 로 내 보 냅 니 다.
3.CSV 방식 으로 내 보 냅 니 다.
사용 중 데이터 가 많 으 면 상기 2,3 중 방법 이 효력 을 잃 는 다 는 것 을 발견 하고 4 번 째 방법 인 toLargerCSV 를 정리 했다.
네 번 째 방법 은 IE 10,chrome 테스트 를 통 과 했 습 니 다.

<html>
<head>
 <div> Table    xls  
 <button onclick='TableToExcel()'>  </button></div>
 <div>  CSV  
 <button onclick='toCSV()'>  </button></div>
 <div>      CSV
 <button onclick='toLargerCSV()'>  </button></div>
</head>
<body>
 <script>   
 // Table    xls  
  function TableToExcel(){
   //    json  
   var jsonData = [
    {
     name:'001',
     id:'621699190001011231'
    },
    {
     name:'002',
     id:'52069919000101547X'
    },
    {
     name:'003',
     id:'423699190103015469'
    },
    {
     name:'004',
     id:'341655190105011749'
    }
   ]
  //     json  table  
   //   
   var str = '<tr><td>name</td><td>id</td></tr>';
   //       
   for(let i = 0;i < jsonData.length;i++){
    str += '<tr>';
    for(let item in jsonData[i]){
  var cellvalue = jsonData[i][item];
      //                  
  //  1 tr    style="mso-number-format:'\@';"   2     = 'XXXX'   
  //        15 
  /*var reg = /^[0-9]+.?[0-9]*$/;
  if ((cellvalue.length>15) && (reg.test(cellvalue))){
  //cellvalue = '="' + cellvalue + '"';
  }*/
  //   `  ',            ES6  
      str+=`<td style="mso-number-format:'\@';">${cellvalue}</td>`; 
  // str+=`<td>${cellvalue}</td>`; 
    }
    str+='</tr>'; 
   }   
   var worksheet = '    '
   var uri = 'data:application/vnd.ms-excel;base64,';
   //         
   var 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>${str}</table></body></html>`;
   //    
  function base64 (s) { return window.btoa(unescape(encodeURIComponent(s)))}
   window.location.href = uri + base64(template);
  }
  
 
 function toCSV(){
 //    json  
   var jsonData = [
    {
     name:'001',
     id:'621699190001011231'
    },
    {
     name:'002',
     id:'52069919000101547X'
    },
    {
     name:'003',
     id:'423699190103015469'
    },
    {
     name:'004',
     id:'341655190105011749'
    }
   ]
  //     json  table  
   //   
   var str = 'name,id
'; // for(let i = 0 ; i < jsonData.length ; i++ ){ for(let item in jsonData[i]){ // \t // ` ', ES6 str+=`${jsonData[i][item] + '\t,'}`; } str+='
'; } let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str); var link = document.createElement("a"); link.href = uri; link.download = " .csv"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } // , 15 30 , 6 function toLargerCSV(){ //CSV , MySQL excel 。 // Excel 15 , 0 =“ ” var str = ' , , ,
'; for(let i=0;i<100000;i++){ str += i.toString()+',1234567890123456789\t, ,bbbb,
' } var blob = new Blob([str], {type: "text/plain;charset=utf-8"}); // blob = new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type}); object_url = window.URL.createObjectURL(blob); var link = document.createElement("a"); link.href = object_url; link.download = " .csv"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } </script> </body> </html>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기