<p>I need to read an Excel 2007 XLSX file in a Java application. Does anyone know of a good API to accomplish this task?</p>

I had to do this in .NET and I couldn't find any API's out there.   My solution was to unzip the .xlsx, and dive right into manipulating the XML.   It's not so bad once you create your helper classes and such.
There are some "gotchas" like the nodes all have to be sorted according to the way excel expects them, that I didn't find in the official docs.  Excel has its own date timestamping, so you'll need to make a conversion formula.