2016-10-13 2 views
0

내 핫을 엑셀 파일로 다운로드하는 예는 다음과 같습니다. thisHandsOnTable exportFile

var exportPlugin = hot.getPlugin('exportFile'); 

그것은 정의되지 않은 반환

문제

는 일을 실패한다는 것입니다. 말할 것도없이 i console.log가 "뜨겁다"면 내가 기대하는 대상이다.

handsontable의 버전은 최신 (1.7.3)입니다.

내 테이블에 플러그인을로드 할 수있는 옵션이 있습니까?

나는 다음과 같은 옵션 뜨거운 만들어 : 당신이 sourceData을 상상할 수 있듯이

data: sourceData, 
colHeaders: colHeaders, 
rowHeaders: false, 
nestedRows: false, 
contextMenu: false, 
formulas: true, 
comments: true, 
columns: columnsProperties, 
cell: cellsProperties, 
fixedColumnsLeft: categoryColumn+1, 
manualColumnFreeze: true, 

이 colHeaders, columnsProperties 및 cellsProperties 다른 곳에서 정의된다.

테이블을 제대로 시각화 할 수 있습니다.

SN

+2

Nevermind, 나는 그것이 PRO 버전에서만 이용 가능하다는 사실을 간과했다. –

답변

1

나는 당신의 필요에 따라 형식을 XLSX로 변환 직접 엑셀로 물론 읽을 수있는 CSV 파일로 표를 다운로드 할 수있는 내 자신의 프로젝트에 기능이 감사합니다.

은 다음 CSV 파일로 JSON 개체를 변환하는 일반적인 기능이며 다운로드이 JSFiddle

내 예를 참조 (IE & 크롬/파이어 폭스 등) :

function JSONToCSVConvertor(JSONData, colHeaders) { 
    var 
    arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData, 
    CSV = '', 
    row = "", 
    fileName = "handsontable.csv"; 

    // Put the header (based on the colHeaders of my table in my example) 
    for (var index in colHeaders) { 
     row += colHeaders[index] + ';'; 
    } 
    row = row.slice(0, -1); 
    CSV += row + '\r\n'; 

    // Adding each rows of the table 
    for (var i = 0; i < arrData.length; i++) { 
     var row = ""; 
     for (var index in arrData[i]) { 
      row += arrData[i][index] + ';'; 
     } 
     row = row.slice(0, -1); 
     CSV += row + '\r\n'; 
    } 

    if (CSV == '') { 
     alert("Invalid data"); 
     return; 
    }   

    // Downloading the new generated csv. 
    // For IE >= 9 
    if(window.navigator.msSaveOrOpenBlob) { 
     var fileData = [CSV]; 
     blobObject = new Blob(fileData); 
     window.navigator.msSaveOrOpenBlob(blobObject, fileName); 
    } else { 
    // For Chome/Firefox/Opera 
     var uri = 'data:text/csv;charset=utf-8,' + escape(CSV); 

     var link = document.createElement("a");  
     link.href = uri; 

     link.style = "visibility:hidden"; 
     link.download = fileName; 

     document.body.appendChild(link); 
     link.click(); 
     document.body.removeChild(link); 
    } 
} 

당신은 예를 들어 버튼을 사용할 수 있습니다 : 나는 ~ 10,000 행이있는 테이블을 사용

Handsontable.Dom.addEvent(save, 'click', function() { 
    JSONToCSVConvertor(hot.getData(), hot.getSettings().colHeaders); 
}); 

참고하고 매력처럼 작동합니다.

+0

프로 버전이 작동한다. 그러나 솔루션을 게시 해 주셔서 감사합니다! –

+1

이것은 벤처 기업이 아닌 프로 버전에 대한 정답입니다. 팹이야, 팹. – DavidC

+0

@SergioNegri 세르지오? 그가 뭘 받을지 팹을주십시오. – DavidC