2016-08-19 4 views
4

この問題は私には完全に困惑しています。Excel from ExcelRange

私はExcelドキュメントを読み込んでいます。 行、列、データがあり、行を繰り返し処理したい。 しかし、EPPLusは奇数です。

私は2番目の行を取る:

ExcelRange range1 = worksheet.Cells[2, worksheet.Dimension.Start.Column, 2, worksheet.Dimension.End.Column]; 

{A2:D2}スプレンディッドを与えます!これまでのところが、その後、私は、行の最初のセルとても良いたい:

ExcelRange range2 = range1[1,1]; 

私に{A1}を与え、問題を悪化させるために、range1の値も代わりに私が選択した行の{A1}に変更されました。

この問題を解決し、ExcelRangeをExcelRangeから取得するにはどうすればよいですか?

var range2 = worksheet.Cells[range1.Start.Row, range1.Start.Column]; 

そして右下のセルに同じ:anyhelp

私は正しい開始セルを取得するには、同じ問題を抱えていた
+0

なぜ最初に他の範囲から範囲を取得しようとしていますか? – mason

+0

文書には、データの行を含むデータ構造が含まれています。各行を検証する必要がありました。そこで私は行を取得し、行を検証するメソッドに転送します –

答えて

0

あなたはgetが実際にベースアドレス(ネストを設定することがわかりますExcelRangeインデクサーの背後にあるコードを見てみると):

public ExcelRange this[string Address] 
{ 
    get 
    { 
     if (_worksheet.Names.ContainsKey(Address)) 
     { 
      if (_worksheet.Names[Address].IsName) 
      { 
       return null; 
      } 
      else 
      { 
       base.Address = _worksheet.Names[Address].Address; 
      } 
     } 
     else 
     { 
      base.Address = Address; 
     } 
     _rtc = null; 
     return this; 
    } 
} 

なぜこのようにしたのですか(私はその実装の詳細を前提としています)。しかし、それはなぜ別のアドレスを参照すると選択範囲が変わるのかを説明します。 Benexx氏のように、CellsWorksheetのコレクションから直接参照する必要があります。

+0

私はEPPlusの意図通りのインデックスで作業します –

2

ため

これは完全に困惑私を持って....ありがとう:

var range3 = worksheet.Cells[range1.End.Row, range1.End.Column]; 
+0

しかし、私はrange2から最初のセルを取りたいと思います –

+0

私はvar range2 = range1 [range1.Start.Row、range1.Start 。カラム]; – Benexx

関連する問題