I've been bitten by this exact issue (albeit on non critical data), save a file as XLS it will silently drop rows beyond 65k - save it as XLSX and it's all good..
Not if it was a bug in the code. 65k sounds suspiciously close to the limit of 16 bit unsigned int.
I'm guessing the exporter looked roughly like:
int exportRow( ... ) {
if( /* can't export or no more rows */ ) {
return 0;
}
/* export row */
return ++someInternalCounter;
}
void export( ... ) {
unsigned short nextRow = 0;
do {
nextRow = exportRow(...);
} while(nextRow > 0);
}
In the above example, the export would silently stop after 65k entries.The way people write C in the wild, this wouldn't surprise me in the slightest. And with Microsoft being all about backwards compatibility, Excel probably defers to some ancient and long forgotten code when exporting to XLS.
You can disable this message (per file basis), if for some reason you dont want to see it.
As far as I remember this message existed since Excel 2007 (which introduced .xlsx format), so the guy is simply lying.