2016-10-25 3 views
2

мне нужно делать разные вещи, основываясь на которых поле (столбец) данные в.Как я могу указать правильный столбец?

  For Each row As DocumentFormat.OpenXml.Spreadsheet.Row In 
       worksheet.Descendants(Of DocumentFormat.OpenXml.Spreadsheet.Row) 
        For Each cell As DocumentFormat.OpenXml.Spreadsheet.Cell In row 
         Select Case True 
          Case cell.CellReference.Value Like "C*" 
           'if this cell is in column C 
          Case cell.CellReference.Value Like "A*" 
           'if this cell is in column A 
          Case Else 
         End Select 
        Next 
      Next 

Это прекрасно работает до тех пор, пока не существует более 26 полей в данной таблице.

Как я могу убедиться, что мой Like "A*" не реагирует на столбец AA, AB и т. Д.?

Имейте в виду, что OpenXML SDK всегда возвращает полную ссылку на ячейку для .cellreference.value, а не только для столбца. И мне нужно указать, что я не пытаюсь опционировать выбросить любой столбец больше 26, но я стараюсь, чтобы указать конкретный столбец. Возможно, что колонка под контролем может оказаться AA или AB, в зависимости от компании, которая создала конкретный источник. Я надеялся на собственность или запретил это, как другие люди научились ссылаться на определенные столбцы в openxml.

+0

Можете ли вы получить столбец из ячейки? – ChrisF

+0

@ChrisF Спасибо. Насколько мне известно, единственный способ получить столбец - это «.cellreference.value», который возвращает строку. Если существует другой способ получить ссылку, возможно, в другом формате, он, похоже, не документируется в MSDN. – CWilson

+0

Я не думал о данных, просто получая колонку в ссылке. – ChrisF

ответ

2

Добавление # после буквенных букв, которые вы пытаетесь сопоставить, сообщит совладельцу о том, что после буквы должно быть число. Это предотвратит вашу проверку на соответствие A, если столбец фактически AA.

Select Case True 
    Case cell.CellReference.Value Like "C#*" 
    'if this cell is in column C 
    Case cell.CellReference.Value Like "A#*" 
    'if this cell is in column A 
    Case cell.CellReference.Value Like "AA#*" 
    'if this cell is in column AA 
    Case Else 
End Select 

Из documentation, то # будет соответствовать "одну цифру (0-9)".

Смежные вопросы