If you are using a TableViewer properly set up with a ContentProvider, it is assumed that the ContentProvider holds the all the elements the table contains.
Try to access these elements through the getElements() method in case you content provider implements IStructuredContentProvider.
Object[] elements = tableViever.getContentProvider().getElements();
In case you want to register to object changes, you can do that in the method setInput() ofthe ContentProvider. Indeed the javadoc for the IContentProvider interface suggests this method as the place for registering to changes.
If you need to access the input at a certain moment, the TableViewer object gives you access to your table input through the getInput() method:
Object tableInput = tableViewer.getInput();
Good luck!