Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
So far, I am able to dynamically build a straight table using the Visualization API.
Also, I can export a pre-existing table to a spreadsheet using the Table API.
The next step for our project is export the data from that dynamic table we just built.
This is where I hit a brick wall...
When pulling back a (pre-existing) visualization from our app, the visualization comes back with a qHyperCube object.
When I get back the visualization I just built -- using the Visualization API -- it does NOT come with the qHyperCube objet.
So qlik.table(visual).exportData(ops,callback) returns something like "Method exportData does not exist" for the new table.
That same code works as expected on the pre-existing objects I pull back from my app.
Has anyone had any success with exporting data from a dynamically created straight table?
Is it even possible?
Thanks!
Hi Michael, where you able to export data from the objects created using visualization API? I am looking for similar solution.
Hi ,
Did you found solution ?
Regards,
Satya
You can use below code.
myApp.visualization.get($(chart).attr('data-qlik-objid')).then(function (visual) {
table = qlik.table(visual.model);
Export();
});
var Export = function () {
table.OnData.unbind(Export);
console.log(table);
table.exportData({ format: 'OOXML', download: false }, function (link) {
//Destroy table created in session.
app.destroySessionObject(table.model.id);
$('.preloader-wrap').fadeOut();
});
};
var ExportToCSV = function () {
table.OnData.unbind(ExportToCSV);
table.exportData({ format: 'CSV_C', download: false }, function (link) {
//Open CSV in new window.
var exportWindow = window.open('http' + (config.isSecure ? 's' : '') + '://' + config.host + ':' + config.port + link, '_blank');
try {
exportWindow.focus();
}
catch (e) {
}
//Destroy table created in session.
app.destroySessionObject(table.model.id);
});
};
Hi,
The Qvisualization model returned from the `get` or `create` method from visualization API comes with a QTable model => https://help.qlik.com/en-US/sense-developer/June2018/Subsystems/APIs/Content/CapabilityAPIs/Visualiz...
... so you don't need to wrap it like this `table = qlik.table(visual.model);`
you can access it directly:
myApp.visualization.get([object_id]).then(visModel => {
visModel.table.exportData({...});
})
this way you don't need to destroy the session Object - it will clean itself when you will close the visualization `visModel.close()`
/aiham
Hi @Aiham,
I tried these steps, but qlik visualization table doesn't have qMatrix data (though it contains hypercube structure).
And after calling export function, qlik gives internal server error.
Do you have any solutions for it?
Regards,
Satya
Hi Satya,
Table API uses "rows" for data:
app.visualization.get('uETyGUP').then(visModel=>{
visModel.show('QV01');
visModel.table.getMoreData();
console.log('rows',visModel.table.rows)
visModel.table.exportData({ format: 'CSV_C', download: true }, function (link) {
console.log(link)
});
})
Regarding the exportData function throwing an internal server error, I couldn't reproduce it - It looks like a bug, you should report it.
Thanks Aiham,
This solution worked for SEP 2018 version. It was giving error for JUNE version.