public void getRealHeadingBasedOnCells(int YNum, int cc, TableCandidate tc) {
		int footnoteLineIndex = tc.getFootnoteBeginRow();
		String[][] cells = tc.getCells();
    	int i=0;
		while (i<footnoteLineIndex) {
			int j=0, nonNullCellNum = 0;
			while (j<cc) {
				if (cells[i][j]=="") {
					break;
				}
				nonNullCellNum ++;
				j++;
			}
			if (nonNullCellNum==cc)	break;
			else i++;
		}
		/*
		 * if the next row contain unit symbols, this row has a very large possibility to be a table column heading row
		 */
		if ((i+1)<footnoteLineIndex ) {
			boolean hasUnitSymbols =  false;
			int j=0;
			while (j<cc) {
				if ( (cells[i+1][j].indexOf("/yg rnI--")>0) || (cells[i+1][j].indexOf("(%)")>0) || (cells[i+1][j].indexOf("w-'")>0) ||
				(cells[i+1][j].indexOf("CLg g-'")>0) || (cells[i+1][j].indexOf("pg ml-1")>=0)	) {
					i++;
					break;
				}
				j++;
			}
		}
		/*
		 * Based on observation, the column heading rows always contain missing cells. 
		 * But the first data row always does not contain missing cell
		 */
		if (i==YNum) i=0;
		if (i>0) i--;	
		tc.setHeadingLineNumber(i);
	}
public void getRealHeadingBasedOnCells ( int YNum , int cc , TableCandidate tc ) { int footnoteLineIndex = tc . getFootnoteBeginRow ( ) ; String [ ] [ ] cells = tc . getCells ( ) ; int i = 0 ; while ( i < footnoteLineIndex ) { int j = 0 , nonNullCellNum = 0 ; while ( j < cc ) { if ( cells [ i ] [ j ] == "" ) { break ; } nonNullCellNum ++ ; j ++ ; } if ( nonNullCellNum == cc ) break ; else i ++ ; } if ( ( i + 1 ) < footnoteLineIndex ) { boolean hasUnitSymbols = false ; int j = 0 ; while ( j < cc ) { if ( ( cells [ i + 1 ] [ j ] . indexOf ( "/yg rnI--" ) > 0 ) || ( cells [ i + 1 ] [ j ] . indexOf ( "(%)" ) > 0 ) || ( cells [ i + 1 ] [ j ] . indexOf ( "w-'" ) > 0 ) || ( cells [ i + 1 ] [ j ] . indexOf ( "CLg g-'" ) > 0 ) || ( cells [ i + 1 ] [ j ] . indexOf ( "pg ml-1" ) >= 0 ) ) { i ++ ; break ; } j ++ ; } } if ( i == YNum ) i = 0 ; if ( i > 0 ) i -- ; tc . setHeadingLineNumber ( i ) ; }
Adjusts the real table heading rows based on the cell information

@param YNum
The number of non-duplicated Y axes in the table area
@param cc
the number of the table columns
@param tc
the object of the table candidate