// ----------------------------------------------------------
public void parseSheet(HSSFSheet oSheet, String sFileDescriptor) {
HSSFCell oCel;
HSSFRow oRow = oSheet.getRow(0);
int iRow;
char cDelim;
String[] aFileDescriptor;
int iFileDescLen;
if (isVoid(sFileDescriptor)) {
iRow = 1;
sFileDescriptor = "";
short iCel = (short) 0;
oCel = oRow.getCell(iCel);
while (oCel!=null) {
if (isVoid(oCel.getStringCellValue())) break;
sFileDescriptor += (sFileDescriptor.length()==0 ? "" : "\t") + oCel.getStringCellValue();
oCel = oRow.getCell(++iCel);
} // wend
} else {
iRow = 1;
aFileDescriptor = Gadgets.split(sFileDescriptor, extractDelimiter(sFileDescriptor));
iFileDescLen = aFileDescriptor.length;
for (int c=0; c<iFileDescLen; c++) {
oCel = oRow.getCell(c);
if (null==oCel) {
iRow = 0;
break;
} else if (!aFileDescriptor[c].equalsIgnoreCase(oCel.getStringCellValue())) {
iRow = 0;
break;
}
} //next
} // fi
cDelim = extractDelimiter(sFileDescriptor);
aFileDescriptor = Gadgets.split(sFileDescriptor, cDelim);
iFileDescLen = aFileDescriptor.length;
StringBuffer oData = new StringBuffer();
while (!isEmptyRow(oSheet.getRow(iRow),iFileDescLen)){
oRow = oSheet.getRow(iRow);
if (oRow.getCell(0)!=null)
oData.append(oRow.getCell(0).getStringCellValue());
for (int c=1; c<iFileDescLen; c++) {
oData.append(cDelim);
if (oRow.getCell(c)!=null)
oData.append(oRow.getCell(c).getStringCellValue());
} // next
oData.append((char) 10);
iRow++;
} // wend
parseData(oData.toString().toCharArray(), sFileDescriptor);