An embedded object in an Office document requires the program that embedded the object to be able to edit or display that object. An object can be from any program and writing a renderer for each program would be an infinite task.
Microsoft realized that no program could write a renderer for every type of embedded object, so every embedded object contains a bitmap of the last time the object was rendered in Office. This bitmap is what is used by applications instead of the filetype of the app that created the object.
What Windward does is as follows:
- For DOCX -> DOCX and XLSX -> XLSX it copies the object across as the object element. In the generated report it will be the same object.
- XLSX is only supported for Excel 2010 and later (Excel 2007 stores the metafile in a very convoluted way).
- For all other cases it uses the embedded bitmap and displays that bitmap for the object in the output.
This generally works exactly as you want. But there are two limitations to this approach:
- If the embedded object uses live data, it will not re-render based on the latest data when the report is generated. It will be the render from the last time Office caused the object to render.
- When you zoom in on a report, the bitmap for the object has limited resolution and when zooming past that limit, the image will look pixellated.