I think the best way is to amortize the overflow detection by (for example) writing to a custom property everytime the user inputs data into a cell.
So, you would be using an approach similar to Lobstrosity's but instead of calculating overflow initially you would be calculating overflow each time a cell's input changes. This has the obvious drawback of not working for pre-populated cells, in this situation way you will have to calculate it for all populated cells at program startup.
Another hardcore option is to fix the cell dimensions (in other words, assuming the cell dimensions are known at page-generation-time) and calculate the overflow on server-side page generation (assuming you are using a server-side language). Its fugly, but it works.