2017-03-17 6 views
0

Excelファイル全体をデータテーブルに読み込むアプリケーションがあります。私は、このテーブルのデータのサブセットを別々のデータテーブルに取り出す必要があります。私は空のセルが見つかるまでExcelの表のセルをループすることでこれを行います。データテーブルからの読み込み。最後の行にエラーをトラップする方法

問題は、Excelテーブルの最長列の最後の行(つまり、Excel表の最後の行)は常に「位置に行がありません」と最後にエラーがあります最も長い列の行があります。私は行カウンタと[11]である私は保存する必要がある列

do { 
     string MyString = dtExcel.Rows[i][11].ToString(); 
    } while (dt.Rows[i][11].ToString().Length > 0); 

:ここ

は私にエラーを与える私のコードの縮小版です。それは最も長い列の最後の行まで完全に動作し、その後爆弾が出ます。

dtExcel.Rows [i] [11]がnullであるか、ToString()の長さがゼロであるかどうかを確認しようとしましたが、このエラーをトラップする方法がわかりませんそれを読み取ろうとするとエラーが発生します。

私の質問は、nullをチェックしたり、文字列に変換しようとする前に、この行が存在するかどうかを調べる方法があるのでしょうか?

これは明らかです。助けてくれてありがとう。代わりに、列が空であるかどうかをチェックするwhileループを使用する

+1

カウンタ「i」?それは 'string MyString = ...'の前後にありますか? – Phylyp

答えて

0

、行をループに

for(int i=0;i < dt.Rows.Count ;i++){ 
    //... 
} 

を使用します。事前に停止するとき、それは知っているよ、ということ、そしてあなたが境界例外

0

のうち、 インデックスを取得することはできませんすることにより は、あなたのDataTableこの方法を読んで試してみてください:あなたが行をインクリメントしている

StringBuilder sb = new StringBuilder(); 
foreach(var r in dt.AsEnumerable()) 
{ 
    if(string.IsNullOrEmpty(r[11])) break; 

    sb.Append(r[11]); 

} 
return sb.ToString(); 
関連する問題