You can work around this problem by using dynamic evaluation ot the reference, via the INDIRECT function.
The INDIRECT function evaluates the value of a cell, where the cell to evaluate is fetched from the value of another cell.
For example,
- In Cell A1, put your cell reference as plain text (not formula), e.g. "'C:\tmp\ForecastAggregate\Total Products\[ForecastWorksheet.xls]2010 Budget'!C10"
In A2, the cell where you want value of that referenced cell to appear, put the formula
=INDIRECT(A1)
This will fetch the target cell from A1 and show its value in A2.
In Java, you could set up a pattern where you create a separate worksheet (e.g. "indirectRef") to manage indirects. Whenever you write an external reference to a cell, you instead write INDIRECT(xx) and put the reference in cell xx in the "indirectRef" worksheet. Given that Poi is mostly interfaces, you may be able to do this transparently with no code changes in your java spreadsheet builder code.
Excel also has an EVALUATE macro that dynamically evaluates formulas, which would be even easier to get working, but this is officially undocumented (but extensively documented elsewhere!) and it may not be supported on all versions of Office.
Hope this helps!