2016-10-25 8 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

一致する列の文字の後に#を追加すると、文字の後に数字がある必要があることがマッチャに伝えられます。これにより、実際に列がAAの場合、Aの一致が確認されなくなります。 documentationから

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 

#は、 "(0-9)任意の1桁" と一致します。

関連する問題