XLSParse::XLSParse(Analyze* pAnalyze) : sst(NULL) , sstsize(0) , sstBuffer(NULL) , sstBytes(0) , codepage(1251) , prev_rectype(0) , saved_reference(NULL) , biff_version(0) , formatTable(NULL) , forced_date_format(NULL) , formatTableIndex(0) , formatTableSize(0) , date_shift(25569.0) , rowptr(NULL) , startrow(0) , lastrow(0) , cell_separator (',') , quote_mode(QUOTE_ALL_STRINGS) , sheet_separator("\f") , m_pAnalyze(pAnalyze) , m_pos(0) { strcpy( number_format,MK_FORMAT(DBL_DIG) ); }
#include "float.h" #include <math.h> #include <time.h> #ifndef HAVE_STRFTIME #include "../compat/strftime.h" #endif static unsigned char rec[MAX_MS_RECSIZE]; int biff_version=0; short int *formatTable=NULL; char *forced_date_format = NULL; size_t formatTableIndex = 0; size_t formatTableSize = 0; double date_shift = 25569.0; #define FLT_FORMAT(a,b,c) a #b c #define MK_FORMAT(x) FLT_FORMAT("%.",x,"g") char number_format[8]=MK_FORMAT(DBL_DIG); void CleanUpFormatIdxUsed(void); void do_table(FILE *input,char *filename) { long rectype; long reclen,build_year=0,build_rel=0,offset=0; int eof_flag=0; int itemsread=1; date_shift=25569.0; /* Windows 1900 date system */ CleanUpFormatIdxUsed(); while (itemsread) { catdoc_read(rec,2,1,input); biff_version=getshort(rec,0); catdoc_read(rec,2,1,input); reclen=getshort(rec,0);