Целочисленное переполнение в библиотеке xlsLib в переполнении стека

Я написал следующую программу с 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 имеет какую-то ошибку. Я действительно ценю некоторую помощь.

Заранее спасибо.

0

Решение

Это ограничение формата Excel. Excel 2003 и более ранние версии ограничены 65536 строками. Таким образом, вы не можете создавать больше строк, если используете старый формат * .xls. Чтобы создать больше строк, вам нужно использовать более новый формат * .xlsx, но, похоже, xlsLib его не поддерживает.

Дополнительная информация:
http://support.microsoft.com/kb/120596/en-us

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]