Make sure all of your fields are lined up correctly. If a field is out of line, many times items will disappear. I've found using Tables takes out a lot of the issues we were having with excel exports. Ever since we switched from just using fields in the detail band to tabels we have had much fewer problems!
*EDIT 2*
As of Jasper 5.1, I believe Jaspersoft fixed this issue by adding a 'none' sort type. I have not tried this due to time constraints but it's worth a shot if you're on 5.1 or later.
*EDIT 1*
My orginal solution worked fine for data sets that only had one measure per category. Basically any data set that didn't have the category repeated more than once. However when the category value was repeated it viewed everything as larger than the value before it. The solution wasn't as obvious as it should have been but I simply added a check in the Comparator to detect if the two objects were equal. If they were then I return 0, otherwise return 1 as usual.
The Soltuion:
Create a comparator which always returns a value of 1 (greater than). iReport sees that the data is already in order and doesn't change anything. This allows you to define ordering at the query level! See the attached java file for more info. I've also attached a jar if you just want the fix.
To use:
Add jar to classpath.
Instantiate the custom comparator in the Comparator Expr box for the desired series or category. Enjoy query level sorting!
So right after I posted this I found the correct documentation. Section 10.4.3 states: http://://flow.html?_flowId=searchFlow&folderUri=/reports/test Change /reports/test with the id of the path you want to go to. In my case /public/WWW.
I resolved my initial issue by changing the option to plotOptions.series.marker.enabled. However it would still be nice to get a iReport Specific api. It doesn't always go 1:1 with the highcharts examples!