/** * Gets the name of the external sheet specified by the index * * @param index the external sheet index * @return the name of the external sheet */ public string getLastExternalSheetName(int index) { // For biff7, the whole external reference thing works differently // Hopefully for our purposes sheet references will all be local if (workbookBof.isBiff7()) { BoundsheetRecord br = (BoundsheetRecord)boundsheets[index]; return(br.getName()); } int supbookIndex = externSheet.getSupbookIndex(index); SupbookRecord sr = (SupbookRecord)supbooks[supbookIndex]; int lastTab = externSheet.getLastTabIndex(index); if (sr.getType() == SupbookRecord.INTERNAL) { // It's an internal reference - get the name from the boundsheets list if (lastTab == 65535) { return("#REF"); } else { BoundsheetRecord br = (BoundsheetRecord)boundsheets[lastTab]; return(br.getName()); } } else if (sr.getType() == SupbookRecord.EXTERNAL) { // External reference - get the sheet name from the supbook record StringBuilder sb = new StringBuilder(); FileInfo fl = new FileInfo(sr.getFileName()); sb.Append("'"); sb.Append(fl.FullName); // getAbsolutePath sb.Append("["); sb.Append(fl.Name); sb.Append("]"); sb.Append((lastTab == 65535) ? "#REF" : sr.getSheetName(lastTab)); sb.Append("'"); return(sb.ToString()); } // An unknown supbook - return unkown //logger.warn("Unknown Supbook 4"); return("[UNKNOWN]"); }
/** * Gets the name of the external sheet specified by the index * * @param index the external sheet index * @return the name of the external sheet */ public string getExternalSheetName(int index) { // For biff7, the whole external reference thing works differently // Hopefully for our purposes sheet references will all be local if (workbookBof.isBiff7()) { BoundsheetRecord br = (BoundsheetRecord)boundsheets[index]; return(br.getName()); } int supbookIndex = externSheet.getSupbookIndex(index); SupbookRecord sr = (SupbookRecord)supbooks[supbookIndex]; int firstTab = externSheet.getFirstTabIndex(index); int lastTab = externSheet.getLastTabIndex(index); string firstTabName = string.Empty; string lastTabName = string.Empty; if (sr.getType() == SupbookRecord.INTERNAL) { // It's an internal reference - get the name from the boundsheets list if (firstTab == 65535) { firstTabName = "#REF"; } else { BoundsheetRecord br = (BoundsheetRecord)boundsheets[firstTab]; firstTabName = br.getName(); } if (lastTab == 65535) { lastTabName = "#REF"; } else { BoundsheetRecord br = (BoundsheetRecord)boundsheets[lastTab]; lastTabName = br.getName(); } string sheetName = (firstTab == lastTab) ? firstTabName : firstTabName + ':' + lastTabName; // if the sheet name contains apostrophes then escape them sheetName = sheetName.IndexOf('\'') == -1 ? sheetName : StringHelper.replace(sheetName, "\'", "\'\'"); // if the sheet name contains spaces, then enclose in quotes return(sheetName.IndexOf(' ') < 0 ? sheetName : '\'' + sheetName + '\''); } else if (sr.getType() == SupbookRecord.EXTERNAL) { // External reference - get the sheet name from the supbook record StringBuilder sb = new StringBuilder(); FileInfo fl = new FileInfo(sr.getFileName()); sb.Append("'"); sb.Append(fl.FullName); // .getAbsolutePath sb.Append("["); sb.Append(fl.Name); sb.Append("]"); sb.Append((firstTab == 65535) ? "#REF" : sr.getSheetName(firstTab)); if (lastTab != firstTab) { sb.Append(sr.getSheetName(lastTab)); } sb.Append("'"); return(sb.ToString()); } // An unknown supbook - return unkown //logger.warn("Unknown Supbook 3"); return("[UNKNOWN]"); }