2012-03-20 10 views
1

私は.xlsxファイルをC#で読む必要があります。私は次のようにしています。しかし、私の行は文字列か二重を持つことができます。C#で入力(xls)ファイルのコンテンツタイプをチェックする方法は?

Input Excel 
Test file 

1 v1 c1 -3.99 

コード:

private void button1_Click(object sender, EventArgs e) 
{ 
    Excel.Application xlApp; 
    Excel.Workbook xlWorkBook; 
    Excel.Worksheet xlWorkSheet; 
    Excel.Range range; 

    string str; 
    int rCnt = 0; 
    int cCnt = 0; 

    xlApp = new Excel.ApplicationClass(); 
    xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

    range = xlWorkSheet.UsedRange; 

    for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) 
    { 
     for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) 
     { 
      str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2 ; 
      MessageBox.Show(str); 
     } 
    } 

    xlWorkBook.Close(true, null, null); 
    xlApp.Quit(); 
} 

今、私は次のステートメントでエラーを取得しています:私は行オブジェクトは、二重または文字列であるかどうかを確認するにはどうすればよいですか?

string str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2; 

答えて

1
object value = x.Value2; 

string str = value as string; 
if (str != null) { 
    // I am string 
} 

double? d = value as double?; 
if (d != null) { 
    // d.Value is double 
} 
+0

ありがとうございます! –

+0

@Csharp_learner:本当に助けてくれてうれしい! :) – abatishchev

-1

あなたはそれが使用する文字列を失敗した場合、二重にそれを解析しようとすることができ:

if(!double.TryParse(input, out result)) 
    resultString = input.ToString(); 

resultString.IsNullOrEmptyを決定する場合は、二重の結果または文字列resultStringを使用する場合は、あなたがチェックできます。

+0

申し訳ありませんが、私には意味がありません。なぜ 'result'を使わないのでしょうか?文字列' input'を文字列に変換するのは何ですか? – abatishchev

+0

さらに 'double.TryParse'は文字列入力のみを受け付けます。つまり、' input'は 'string'でなければならず、' object'にすることはできません。 – abatishchev

+0

'try {double d = double.Parse(objectValue);}を使うことができます。 } catch {} 'しかし、演算子' as'や 'is'ではなく、はるかに遅いです。 – abatishchev

関連する問題