Экспорт всего отчета Qlik с расширением Qlik - PullRequest
0 голосов
/ 07 мая 2019

я работаю над расширением Qlik внутри редактора расширений Qlik.Моя цель - экспортировать текущий отчет в формате PDF и Excel.Я попытался выбрать HTML-код, отформатировать его и сохранить в формате pdf.Это сработало хорошо, так как я заметил, что только отображаемые строки являются exporterКажется, что невидимые строки удаляются из HTML.Есть ли способ получить данные отчета напрямую?Я бы построил таблицы самостоятельно.

1 Ответ

0 голосов
/ 18 июня 2019

Вы можете получить данные, проанализировав гиперкуб этого отчета, а затем нарисовать его самостоятельно.

Это будет включать: Доступ к гиперкубу в вашем расширении.Получить размеры и меры гиперкуба.Цикл по рисованию данных в функции рисования.

В исходном JS вы можете определить, сколько гиперкубов вы хотите получить изначально:

        initialProperties: {
            qHyperCubeDef: {
                qDimensions: [],
                qMeasures: [],
                qInitialDataFetch: [{
                        qWidth: 24,
                        qHeight: 400
                    }]
            }
        },

Затем в вашем коде вы можете анализироватьгиперкуб и использовать его содержимое для рисования таблиц (просто подтверждение концепции), перегружая функцию рисования:

 paint: function ($element, layout) {
            var lastrow = 0;
            var numDimensions = self.backendApi.getDimensionInfos().length;
            var numMeasures = self.backendApi.getMeasureInfos().length;         
            // This will be your table header
            for (var i = 0; i < self.backendApi.getDimensionInfos().length; i++) {
                html += self.backendApi.getDimensionInfos()[i].qFallbackTitle;
            }
            self.backendApi.getMeasureInfos().forEach(function (cell) {
                html += cell.qFallbackTitle';
            });
            // this will be your table rows
            this.backendApi.eachDataRow(function (rownum, row) {
                   lastrow = rownum;
                   for (var i = 0; i < row.length; i++) {
                        if (row[i].qIsOtherCell) {
                            row[i].qText = self.backendApi.getDimensionInfos()[i].othersLabel;
                        }
                        if( row[i].qText !== undefined ){
                            output_string = row[i].qText;
                        }
                        html += output_string ;
                    }
            }
            $element.html(html);
            // there may be more data after that initial fecth
           // request more data until hypercube data ends                      
            if (this.backendApi.getRowCount() > lastrow + 1) {
                var requestPage = [{
                        qTop: lastrow + 1,
                        qLeft: 0,
                        qWidth: 24,
                        qHeight: Math.min(500, this.backendApi.getRowCount() - lastrow)
                    }];
                self.backendApi.getData(requestPage).then(function () {
                    self.paint($element);
                });
            }
        }

На самом деле важная часть: вы можете получить доступ к данным, загрузив гиперкубиспользуется для создания этого отчета .

Изучите это, и все будет готово.

Надеюсь, это поможет.

...