예제 #1
0
 public TableCell this[string columnName]
 {
     get
     {
         TableColumn tc = Parent
                          .TableColumns()
                          .Where(x => x.Name.ToLower() == columnName.ToLower())
                          .FirstOrDefault();
         if (tc == null)
         {
             throw new Exception("Invalid column name: " + columnName);
         }
         string[] refs          = Parent.Ref.Split(':');
         string[] startRefs     = XlsxTables.SplitAddress(refs[0]);
         string   columnAddress = XlsxTables.IndexToColumnAddress(XlsxTables.ColumnAddressToIndex(startRefs[0]) + tc.ColumnIndex);
         Cell     cell          = Row.Cells().Where(c => c.ColumnAddress == columnAddress).FirstOrDefault();
         if (cell != null)
         {
             if (cell.Type == "s")
             {
                 return(new TableCell(cell.SharedString));
             }
             else
             {
                 return(new TableCell(cell.Value));
             }
         }
         else
         {
             return(new TableCell(""));
         }
     }
 }
예제 #2
0
        public static void ParseRange(string theRef, out int leftColumn, out int topRow, out int rightColumn, out int bottomRow)
        {
            // C5:E7
            var    spl           = theRef.Split(':');
            string refStart      = spl.First();
            var    refStartSplit = XlsxTables.SplitAddress(refStart);

            leftColumn = XlsxTables.ColumnAddressToIndex(refStartSplit[0]);
            topRow     = Int32.Parse(refStartSplit[1]);

            string refEnd      = spl.ElementAt(1);
            var    refEndSplit = XlsxTables.SplitAddress(refEnd);

            rightColumn = XlsxTables.ColumnAddressToIndex(refEndSplit[0]);
            bottomRow   = Int32.Parse(refEndSplit[1]);
        }
예제 #3
0
        public IEnumerable <TableRow> TableRows()
        {
            string refStart        = Ref.Split(':').First();
            int    rowStart        = Int32.Parse(XlsxTables.SplitAddress(refStart)[1]);
            string refEnd          = Ref.Split(':').ElementAt(1);
            int    rowEnd          = Int32.Parse(XlsxTables.SplitAddress(refEnd)[1]);
            int    headerRowsCount = HeaderRowCount == null ? 0 : (int)HeaderRowCount;
            int    totalRowsCount  = TotalsRowCount == null ? 0 : (int)TotalsRowCount;

            return(Parent
                   .Rows()
                   .Skip(headerRowsCount)
                   .SkipLast(totalRowsCount)
                   .Where(r =>
            {
                int rowId = Int32.Parse(r.RowId);
                return rowId >= rowStart && rowId <= rowEnd;
            }
                          )
                   .Select(r => new TableRow(this)
            {
                Row = r
            }));
        }