Sheetjs для SAPUI5;экспорт данных таблицы в электронную таблицу - PullRequest
0 голосов
/ 16 мая 2018

Это было одно требование для того, чтобы одна из данных моей таблицы приложения SAPUI5 могла быть экспортирована в Excel / электронную таблицу. Текущий доступный стандартный подход SAPUI5 sap / ui / core / util / Export не соответствует стандарту экспорта данных, особенно он записывает данные только в 1 столбец. образец экспортируемых данных enter image description here

Хорошей новостью стало то, что, наконец, SAP сделал sap.ui.export (доступный в версии 1.50), в котором он точно экспортирует все данные таблицы в электронную таблицу, по-видимому, согласно одному из их выражателей, указанная библиотека недоступна для инструментов разработки Eclipse. https://answers.sap.com/questions/474315/sapuiexport-missing-in-sap-ui5-version-152.html

Затем мне предложили использовать стороннюю библиотеку JS, которая может экспортировать данные в электронную таблицу, и после исследования я наткнулся на sheetJS. Я нашел эту статью о том, как реализовать и использовать код библиотеки sheetJS в файле SAPUI5 Export Excel (расширение .xlsx) с включением данных адаптивных таблиц в SAPUI5 , но в целом мой вопрос для реализации этого заключается в следующем: Как добавить внешние библиотеки JS в ваш проект SAPUI5 на Eclipse? Обратите внимание, что мы запускаем наши приложения SAPUI5 на сервере Netweaver. Мне нужно понять, где разместить эти JS в зависимости от среды, в которой я нахожусь (нормально ли помещать их / их в webContent / path?) И как получить к ним доступ, если когда-либо. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Существует элемент управления sap.ui.export.Spreadsheet

Я построил образец здесь некоторое время назад.

0 голосов
/ 18 мая 2018

Уже получил ответ, объединив все исследования, которые я получил.

Я нашел множество комбинаций внешних библиотек, которые можно использовать, чтобы листы работали как xlsx.js - только jszip.js или xlsx.full.min.js, или есть также xlsx.full.min.js - FileSaver.js сочетание.

Сначала я попытался использовать комбинацию xlsx.full.min.js и FileSaver, и это сработало! Сначала я загрузил обе библиотеки и скопировал их в мой путь / webContent / controller (да, тот же уровень пути моих контроллеров).

Далее нужно определить их в вашем контроллере, используя sap.ui.define Определение сторонних библиотек в SAPUI5 Вы также заметите, что я добавил 2 строки кода выше: / * global XLSX: true / / глобальное сохранение как: правда * / С этими двумя строками кодов будет ошибка при вызове библиотек. Это глобальные имена JS, если он вызывается вне класса js.

Ниже приведен тестовый код, который я использовал для доступа к двум JS, о которых я упоминал выше:

onExportToExcel: function(){
        console.log(XLSX);
        var wb = XLSX.utils.book_new();
        wb.Props = {
                Title: "Sample SheetJS",
                Subject: "Test",
                Author: "HPC",
                CreatedDate: new Date(2018,5,19)
        };
        wb.SheetNames.push("Test Sheet");
        var ws_data = [['HPC' , 'TEST', 'call']];  //a row with 2 columns       
        var ws = XLSX.utils.aoa_to_sheet(ws_data);
        wb.Sheets["Test Sheet"] = ws;

        var wbout = XLSX.write(wb, {bookType:'xlsx',  type: 'binary'});
        function s2ab(s) { 
            var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
            var view = new Uint8Array(buf);  //create uint8array as viewer
            for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
            return buf;    
        }
        saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), 'test.xlsx');
    }

Выход: Выходной файл экспорта

Не стесняйтесь оставить отзыв об этом. Может быть другой лучший подход для достижения этой цели. Спасибо!

...