2013-06-10 3 views
0

Я использую Libxl для чтения C++ для чтения из .xlsx файла. Код выглядит следующим образомLibxl read integer from excel file

void main() 
{ 
    Book* book = xlCreateXMLBook(); 
    if (book) { 
     if(book->load("input.xlsx")) { 
      Sheet* sheet = book->getSheet(0); 
      if (sheet) { 
      long int id; 
      for(int i=1; i<15; i++) { 
       id = sheet->readNum(i,0); 
       cout << id << endl; 
       } 
      } 
     } 
    } 
    book->release(); 
} 

Лист Excel содержит следующие данные, и результат кажется другим.

Original Data | Output from code 
UNKNOWN  | 0 
47012   | 141366 
48964   | 154840 
425214  | 0 
47018   | 134427 

Любая помощь приветствуется.

+1

Похоже, что LibXL является коммерческим продуктом. Может быть, вы можете положиться на их поддержку? –

+0

'void main' не является юридической подписью. – chris

+0

@chris - Смысл? – user62089

ответ

0

readNum возвращает двойной не длинный ИНТ

Я предполагаю, что «UNKNOWN» является строкой. Если так что вы можете сделать это:

double id; 
const wchar_t* str; 
for(int i=1; i<15; i++) { 
    str = sheet->readStr(i, 0); 
    if (str) { 
     wcout << str << endl; // need to use wcout as it's a wide string 
    } else { 
     id = sheet->readNum(i,0); 
     cout << id << endl; 
    } 
} 

Согласно документации, readStr вернет NULL, если ячейка не содержит строку, так, то вы можете возвратиться к чтению номера.