code: private void processTableData() throws IOException
     {
        DirectoryEntry dir = (DirectoryEntry) m_viewDir.getEntry("CTable");
        FixFix ff = new FixFix(126, new DocumentInputStream(((DocumentEntry) dir.getEntry("FixFix   0"))));
        FixDeferFix fdf = new FixDeferFix(new DocumentInputStream(((DocumentEntry) dir.getEntry("FixDeferFix   0"))));
        int items = ff.getItemCount();
        StringBuilder sb = new StringBuilder();
        TableContainer container = m_file.getTables();
  
        for (int loop = 0; loop < items; loop++)
        {
           byte[] data = ff.getByteArrayValue(loop);
           Table table = new Table();
  
           table.setID(MPPUtility.getInt(data, 0));
  
           String name = MPPUtility.getUnicodeString(data, 4);
           if (name.indexOf('&') != -1)
           {
              sb.setLength(0);
              int index = 0;
              char c;
  
              while (index < name.length())
              {
                 c = name.charAt(index);
                 if (c != '&')
                 {
                    sb.append(c);
                 }
                 ++index;
              }
  
              name = sb.toString();
           }
  
           table.setName(MPPUtility.removeAmpersands(name));
           container.add(table);
  
           byte[] extendedData = fdf.getByteArray(getOffset(data, 122));
           if (extendedData != null)
           {
              byte[] columnData = fdf.getByteArray(getOffset(extendedData, 8));
              processColumnData(table, columnData);
           }
  
           //System.out.println(table);
        }
     }
docs: This method extracts table data from the MPP file.
  
  @throws IOException