2016-10-13 3 views
0

Я следую примеру this, чтобы загрузить мой hot в файл excel.HandsOnTable exportFile

Проблема заключается в том, что он не делает:

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

Он возвращает неопределенное значение. Излишне говорить, что если i console.log «горячий», то это объект, который я ожидаю.

Версия самонаводящегося является самой последней на сегодняшний день (1.7.3).

Есть ли какой-либо вариант в моем столе, который помешает мне загрузить плагин?

Я создал горячий со следующими параметрами:

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

Как вы можете себе представить sourceData, colHeaders, columnsProperties и cellsProperties определены в другом месте.

Я могу правильно визуализировать таблицу.

Спасибо

SN

+2

Nevermind, я упустил из виду тот факт, что он доступен только в версии PRO –

ответ

1

У меня есть возможность на собственном проекте, чтобы загрузить таблицу в CSV-файл, который вы можете непосредственно читать с первенствует и, конечно, конвертировать XLSX формат в зависимости от ваших потребностей.

Смотрите мой пример в этом JSFiddle

Следующая основная функция для преобразования объекта JSON в .csv файл и загрузить его (для IE & хром/Firefox и т.д. ..):

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); 
    } 
} 

Вы можете использовать его с помощью кнопки, например:

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

Обратите внимание, что я использую таблицу с ~ 10k строк, и он работает как шарм.

+0

Про версия работает. Но спасибо за сообщение вашего решения! –

+1

Это правильный ответ для безпрофессиональной версии. Я бы рискнул. Это Fab, Fab. – DavidC

+0

@ СерхиоНегри, что вы скажете, Серхио? Дайте то, что он заслуживает. – DavidC

Смежные вопросы