#include <rlspreadsheet.h>

Public Member Functions | |
| rlSpreadsheetWorkbook (char delimitor='\t') | |
| column = 1...N, row = 1...N, page = 1...N | |
| virtual | ~rlSpreadsheetWorkbook () |
| const char * | text (int column, int row, int page) |
| void | setText (int column, int row, int page, const char *text) |
| int | printf (int column, int row, int page, const char *format,...) |
| void | clear () |
| int | read (const char *filename) |
| int | write (const char *filename) |
| int | exists (int column, int row, int page) |
| rlSpreadsheetTable * | getFirstTable () |
Private Attributes | |
| char | delimitor |
| rlSpreadsheetTable * | firstTable |
A series of spreadsheet tables. The class works with CSV files.
Definition at line 95 of file rlspreadsheet.h.
| rlSpreadsheetWorkbook::rlSpreadsheetWorkbook | ( | char | delimitor = '\t' |
) |
column = 1...N, row = 1...N, page = 1...N
Definition at line 423 of file rlspreadsheet.cpp.
00424 { 00425 firstTable = NULL; 00426 delimitor = del; 00427 }
| rlSpreadsheetWorkbook::~rlSpreadsheetWorkbook | ( | ) | [virtual] |
Definition at line 429 of file rlspreadsheet.cpp.
00430 { 00431 rlSpreadsheetTable *item,*last; 00432 item = firstTable; 00433 while(item != NULL) 00434 { 00435 last = item; 00436 item = item->getNextTable(); 00437 if(item != last) delete last; 00438 } 00439 }
| void rlSpreadsheetWorkbook::clear | ( | ) |
Definition at line 487 of file rlspreadsheet.cpp.
00488 { 00489 rlSpreadsheetTable *item; 00490 00491 item = firstTable; 00492 while(item != NULL) 00493 { 00494 item->clear(); 00495 item = item->getNextTable(); 00496 } 00497 }
| int rlSpreadsheetWorkbook::exists | ( | int | column, | |
| int | row, | |||
| int | page | |||
| ) |
Definition at line 570 of file rlspreadsheet.cpp.
00571 { 00572 rlSpreadsheetTable *item; 00573 int p; 00574 00575 p = 1; 00576 item = firstTable; 00577 while(item != NULL) 00578 { 00579 if(p == page) return item->exists(column,row); 00580 p++; 00581 item = item->getNextTable(); 00582 } 00583 return 0; 00584 }
| rlSpreadsheetTable * rlSpreadsheetWorkbook::getFirstTable | ( | ) |
Definition at line 586 of file rlspreadsheet.cpp.
00587 { 00588 return firstTable; 00589 }
| int rlSpreadsheetWorkbook::printf | ( | int | column, | |
| int | row, | |||
| int | page, | |||
| const char * | format, | |||
| ... | ||||
| ) |
Definition at line 474 of file rlspreadsheet.cpp.
00475 { 00476 int ret; 00477 char buf[rl_PRINTF_LENGTH_SPREADSHEET]; // should be big enough 00478 00479 va_list ap; 00480 va_start(ap,format); 00481 ret = rlvsnprintf(buf, rl_PRINTF_LENGTH_SPREADSHEET - 1, format, ap); 00482 va_end(ap); 00483 setText(column,row,page,buf); 00484 return ret; 00485 }
| int rlSpreadsheetWorkbook::read | ( | const char * | filename | ) |
Definition at line 499 of file rlspreadsheet.cpp.
00500 { 00501 FILE *fp; 00502 rlSpreadsheetTable *item,*last,*next; 00503 int p = 1; 00504 char buf[16],*fname; 00505 if(filename == NULL) return -1; 00506 00507 // delete old workbook 00508 item = firstTable; 00509 while(item != NULL) 00510 { 00511 last = item; 00512 item = item->getNextTable(); 00513 if(item != last) delete last; 00514 } 00515 00516 // read new workbook 00517 fname = new char[strlen(filename)+16]; 00518 while(1) 00519 { 00520 strcpy(fname,filename); 00521 sprintf(buf,"%d.txt",p); 00522 strcat(fname,buf); 00523 // test if file exists 00524 fp = fopen(fname,"r"); 00525 if(fp == NULL) break; 00526 fclose(fp); 00527 if(p==1) 00528 { 00529 item = firstTable = new rlSpreadsheetTable(delimitor); 00530 } 00531 else 00532 { 00533 next = new rlSpreadsheetTable(delimitor); 00534 item->setNextTable(next); 00535 item = next; 00536 } 00537 if(item->read(fname) < 0) break; 00538 p++; 00539 } 00540 00541 delete [] fname; 00542 return 0; 00543 }
| void rlSpreadsheetWorkbook::setText | ( | int | column, | |
| int | row, | |||
| int | page, | |||
| const char * | text | |||
| ) |
Definition at line 456 of file rlspreadsheet.cpp.
00457 { 00458 int p = 1; 00459 rlSpreadsheetTable *item,*nextitem; 00460 00461 if(page < 1) return; 00462 if(firstTable == NULL) firstTable = new rlSpreadsheetTable; 00463 item = firstTable; 00464 while(1) 00465 { 00466 if(p == page) { item->setText(column, row, text); return; } 00467 nextitem = item->getNextTable(); 00468 if(nextitem == NULL) item->setNextTable(new rlSpreadsheetTable); 00469 item = item->getNextTable(); 00470 p++; 00471 } 00472 }
| const char * rlSpreadsheetWorkbook::text | ( | int | column, | |
| int | row, | |||
| int | page | |||
| ) |
Definition at line 441 of file rlspreadsheet.cpp.
00442 { 00443 int p = 1; 00444 rlSpreadsheetTable *item; 00445 00446 item = firstTable; 00447 while(item != NULL) 00448 { 00449 if(p == page) return item->text(column, row); 00450 item = item->getNextTable(); 00451 p++; 00452 } 00453 return null_string; 00454 }
| int rlSpreadsheetWorkbook::write | ( | const char * | filename | ) |
Definition at line 545 of file rlspreadsheet.cpp.
00546 { 00547 rlSpreadsheetTable *item = NULL; 00548 int p = 1; 00549 char buf[16],*fname; 00550 if(filename == NULL) return -1; 00551 00552 // write workbook 00553 fname = new char[strlen(filename)+16]; 00554 while(1) 00555 { 00556 strcpy(fname,filename); 00557 sprintf(buf,"%d.txt",p); 00558 strcat(fname,buf); 00559 if(p==1) item = firstTable; 00560 else item = item->getNextTable(); 00561 if(item == NULL) break; 00562 if(item->write(fname) < 0) break; 00563 p++; 00564 } 00565 00566 delete [] fname; 00567 return 0; 00568 }
char rlSpreadsheetWorkbook::delimitor [private] |
Definition at line 110 of file rlspreadsheet.h.
Definition at line 111 of file rlspreadsheet.h.
1.6.3