コード例 #1
0
        public static String PrependSheetName(IFormulaRenderingWorkbook book, int field_1_index_extern_sheet, String cellRefText)
        {
            ExternalSheet externalSheet = book.GetExternalSheet(field_1_index_extern_sheet);
            StringBuilder sb;

            if (externalSheet != null)
            {
                String wbName    = externalSheet.WorkbookName;
                String sheetName = externalSheet.SheetName;
                if (wbName != null)
                {
                    sb = new StringBuilder(wbName.Length + sheetName.Length + cellRefText.Length + 4);
                    SheetNameFormatter.AppendFormat(sb, wbName, sheetName);
                }
                else
                {
                    sb = new StringBuilder(sheetName.Length + cellRefText.Length + 4);
                    SheetNameFormatter.AppendFormat(sb, sheetName);
                }
                if (externalSheet is ExternalSheetRange)
                {
                    ExternalSheetRange r = (ExternalSheetRange)externalSheet;
                    if (!r.FirstSheetName.Equals(r.LastSheetName))
                    {
                        sb.Append(':');
                        SheetNameFormatter.AppendFormat(sb, r.LastSheetName);
                    }
                }
            }
            else
            {
                String firstSheetName = book.GetSheetFirstNameByExternSheet(field_1_index_extern_sheet);
                String lastSheetName  = book.GetSheetLastNameByExternSheet(field_1_index_extern_sheet);
                sb = new StringBuilder(firstSheetName.Length + cellRefText.Length + 4);
                if (firstSheetName.Length < 1)
                {
                    // What excel does if sheet has been deleted
                    sb.Append("#REF"); // note - '!' Added just once below
                }
                else
                {
                    SheetNameFormatter.AppendFormat(sb, firstSheetName);
                    if (!firstSheetName.Equals(lastSheetName))
                    {
                        sb.Append(':');
                        sb.Append(lastSheetName);
                    }
                }
            }
            sb.Append('!');
            sb.Append(cellRefText);
            return(sb.ToString());
        }
コード例 #2
0
        public ExternalSheet GetExternalSheet(int externSheetIndex)
        {
            ExternalSheet sheet = _iBook.GetExternalSheet(externSheetIndex);

            if (sheet == null)
            {
                // Try to treat it as a local sheet
                int localSheetIndex = ConvertFromExternSheetIndex(externSheetIndex);
                if (localSheetIndex == -1)
                {
                    // The sheet referenced can't be found, sorry
                    return(null);
                }
                if (localSheetIndex == -2)
                {
                    // Not actually sheet based at all - is workbook scoped
                    return(null);
                }

                // Look up the local sheet
                string sheetName = GetSheetName(localSheetIndex);

                // Is it a single local sheet, or a range?
                int lastLocalSheetIndex = _iBook.GetLastSheetIndexFromExternSheetIndex(externSheetIndex);
                if (lastLocalSheetIndex == localSheetIndex)
                {
                    sheet = new ExternalSheet(null, sheetName);
                }
                else
                {
                    string lastSheetName = GetSheetName(lastLocalSheetIndex);
                    sheet = new ExternalSheetRange(null, sheetName, lastSheetName);
                }
            }
            return(sheet);
        }