I've done it with Apache POI, and while that 'worked' it doesn't wash away the fundamental problems with Excel datatype guessing. CSV is not great either (no fun explaining encoding or invisible control characters and unusual whitespace to the average IT person) but it is nevertheless less bad.