im在Qlik扩展编辑器中开发Qlik扩展。我的目标是将当前报告导出为pdf和excel。 我试图选择html代码,对其进行格式设置并首先另存为pdf。这很好,因为我注意到仅显示的行是导出文件。似乎不可见的行已从html中删除。 有什么方法可以直接获取报告数据?我会自己建立表格。
答案 0 :(得分:0)
您可以获取数据,解析该报表的超立方体,然后自己绘制。
这将涉及: 访问扩展中的超立方体。 获取超立方体的尺寸和度量。 循环遍历绘画功能上的数据绘画。
在初始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);
});
}
}
实际上,重要的部分是,您可以通过加载用于构建该报告的超立方体来访问数据。
调查一下,您会完成的。
希望这会有所帮助。