2016-12-12 3 views
1

Excelセルをトラバースしてデータを取得したいがセルは正規ではない。たとえば、複数の行でマージされた赤いセル。すべての行をトラバースする方法は?私は次のようにデータを取得するために、行をトラバースしたいC#でデータを取得するためにExcelセルをトラバースしたい

enter image description here

  1. 081701-B-AAAA-yと;
  2. 081702-c-aaaa-y;
  3. 081704-d-aaaa-y;
  4. 081703-e-ffff-k;
  5. ...

は、それを達成するために、何か良い方法はありますか?

+0

、.NETフレームワーク内での良好な実装がすでにあります。私はマージされたセルの解析については正確に試していませんが、あなたはそれを使って遊んでみることができます。その別の投稿:http://stackoverflow.com/questions/5282999/reading-csv-file-and-storing-values-into-an-array/33796861#33796861。 パーサの詳細は、http://codeskaters.blogspot.ae/2015/11/c-easiest-csv-parser-built-in-net.html – Habeeb

+0

@Habeeb、ありがとうございます!あまりにも遅くあなたに返信して申し訳ありません!私はリンクを開くことができません "codeskaters.blogspot.ae/2015/11/..."、あなたは私を助けることができますか? – Superman

答えて

1

私はEPPlusをお勧めします:http://epplus.codeplex.com/

var package = new ExcelPackage(new FileInfo("sample.xlsx")); 

ExcelWorksheet workSheet = package.Workbook.Worksheets[1]; 

for (int i = workSheet.Dimension.Start.Column; 
     i <= workSheet.Dimension.End.Column; 
     i++) 
{ 
    for (int j = workSheet.Dimension.Start.Row; 
      j <= workSheet.Dimension.End.Row; 
      j++) 
    { 
     object cellValue = GetCellValueFromPossiblyMergedCell(workSheet,i, j); 
    } 
} 

を合併細胞の場合、私はあなたがその左上のセル参照することにより、マージされたセルを参照してください信じています。次のヘルパーメソッドは、マージされたセルの値を取得します。供給

static string GetCellValueFromPossiblyMergedCell(ExcelWorksheet wks, int row, int col) 
    { 
     var cell = wks.Cells[row, col]; 
     if (cell.Merge)            //(1.) 
     { 
      var mergedId = wks.MergedCells[row, col];    //(2.) 
      return wks.Cells[mergedId].First().Value.ToString();  //(3.) 
     } 
     else 
     { 
      return cell.Value.ToString(); 
     } 
    } 

ヘルパーメソッド:Excelを解析するためにHow to use Epplus with cells containing few rows

+0

あなたの返信ありがとう!あまりにも遅くあなたに返信して申し訳ありません!この方法では、結合されたセルを解決できません。例えば:2番目の行のデータを取得する:081702-c - "" - y; workSheet.Cells [2、3]は ""です。 – Superman

+0

@Superman私は、マージされた範囲から値を引き出す方法を示すためにサンプルコードを更新しました。 – Daniel

+0

素晴らしい!ありがとう! – Superman

関連する問題