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("")); } } }
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]); }
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 })); }