#include BOOL Worksheet::open(const String &strPathFileName) { Array &matrix=mMatrix; Record lotusRecord; char buffer[1024]; char charByte; FileIO inFile; int maxRow(0); int maxCol(0); BOOL isFirstPass; mRows=0; mCols=0; isFirstPass=TRUE; if(!inFile.open(strPathFileName))return FALSE; for(int pass=0;pass<2;pass++) { if(1==pass) { inFile.rewind(); matrix.size(maxRow+1); for(int index=0;indexmaxRow)maxRow=label.row(); if(label.column()>maxCol)maxCol=label.column(); if(!pass)continue; (matrix[label.row()])[label.column()]=::new Label(label); (matrix[label.row()])[label.column()].disposition(PointerDisposition::Delete); continue; } if(Record::Number==lotusRecord.type()) { Number number(lotusRecord); number.read(inFile); if(number.row()>maxRow)maxRow=number.row(); if(number.column()>maxCol)maxCol=number.column(); if(!pass)continue; (matrix[number.row()])[number.column()]=::new Number(number); (matrix[number.row()])[number.column()].disposition(PointerDisposition::Delete); continue; } if(Record::Integer==lotusRecord.type()) { Integer integer(lotusRecord); integer.read(inFile); if(integer.row()>maxRow)maxRow=integer.row(); if(integer.column()>maxCol)maxCol=integer.column(); if(!pass)continue; (matrix[integer.row()])[integer.column()]=::new Integer(integer); (matrix[integer.row()])[integer.column()].disposition(PointerDisposition::Delete); continue; } if(Record::Formula==lotusRecord.type()){::OutputDebugString("Formula encountered\n");break;} if(Record::Eof==lotusRecord.type())break; if(lotusRecord.length() &matrix=mMatrix; FileIO outFile; BYTE header[]={0x06,0x04}; BYTE format[]={0x27}; if(!outFile.open(strPathFileName,FileIO::GenericWrite,FileIO::FileShareRead,FileIO::CreateAlways))return FALSE; Record lotusRecord(Record::Bof,2); lotusRecord.write(outFile); outFile.write(header,sizeof(header)); lotusRecord.type(Record::LabelFmt); lotusRecord.length(1); lotusRecord.write(outFile); outFile.write(format,sizeof(format)); for(int row=0;row &matrix=mMatrix; String strColumn; FileIO outFile; char *pCursor; if(!outFile.open(strPathFileName,FileIO::GenericWrite,FileIO::FileShareRead,FileIO::CreateAlways))return FALSE; strColumn.reserve(MaxColumn); for(int row=0;row