Я написал следующую программу с xlsLib, чтобы создать файл Excel xls с рабочим листом на 100 000 строк:
#include <xlslib.h>
#include <xlslib/number.h>
#include <xlslib/common/xlstypes.h>
using namespace xlslib_core;
using namespace xlslib_strings;
int main()
{
workbook wb;
worksheet *sh = wb.sheet( "DATA" );
unsigned32_t numberRows = 100000;
unsigned32_t numberColumns = 10;
for(unsigned32_t r=0;r<numberRows;r++)
{
for(unsigned32_t c=0;c<numberColumns;c++)
{
double number = r + c;
sh->number( r, c, number );
}
}
wb.Dump("/tmp/test.xls");
return 0;
}
Когда я открываю файл «test.xls», создается впечатление, что произошло целочисленное переполнение: строки начинают перекрываться со значения 65 535, которое является максимальным значением целого числа без знака.
Я не знаю, сделал ли я какую-то ошибку или xlsLib имеет какую-то ошибку. Я действительно ценю некоторую помощь.
Заранее спасибо.
Это ограничение формата Excel. Excel 2003 и более ранние версии ограничены 65536 строками. Таким образом, вы не можете создавать больше строк, если используете старый формат * .xls. Чтобы создать больше строк, вам нужно использовать более новый формат * .xlsx, но, похоже, xlsLib его не поддерживает.
Дополнительная информация:
http://support.microsoft.com/kb/120596/en-us
Других решений пока нет …