Perhaps you could use a microflow to massage your data into one object type and then use one or more of the following to display the data?
If you are looking for more tabular (excel-like) reports then perhaps a datagrid?
If you are looking for more graphical reports would the charts widget work?
There are various options.
Build an OQL configuration interface where you set up your OQL queries. The result then can be converted to JSON/CSV/Excel/PDF/Image (Since you want to create a singular interface for visualizing different types of data, you need something generic)
Depending your target output type[s] you can then go ahead and use/create front end visualization widgets.
Excel is pretty good and you can implement TonyGermaneri/canvas-datagrid and SheetJS/js-xlsx to produce something like this, that way they get their xlsx files and some front end view of it