2012-03-12 4 views
0

可能性の重複:
Read data from Excel filesデータの読み出し

私はC#でExcelスプレッドシートからの読み取りいくつかの問題を抱えています。 私は私の質問があるXに

int i = 1; 
int number; 
System.Array myvalues; string[] strArray; 
Microsoft.Office.Interop.Excel.Range range = 
    worksheet.get_Range("A" + i.ToString(), "X" + i.ToString()); 

while(range.Count!=0) 
{ 
    i++; 
    range = worksheet.get_Range("A" + i.ToString(), "X" + i.ToString()); 
    myvalues = (System.Array)range.Cells.Value; 
    strArray = ConvertToStringArray(myvalues); 
    number = Convert.ToInt32(strArray[0]); 
} 

からすべてのセルを読んで、このコードを持っている:私は「数」の値に基づいて、Excelで次の4 *「数」の行を読むことができるどのように?

A B C D E F G H I J 
a a a a a 1 a a a a 

Fのセルの値が1で私はFのセルの値は、私が読みたい2である場合 を(GHIJ)を読みたいです(GHIJKLMN)

A B C D E F G H I J K L M N 
a a a a a 2 a a a a a a a a 
:例えば

Fのセル値3:

A B C D E F G H I J K L M N O P Q R 
a a a a a 3 a a a a a a a a a a a a 

です。

if (!number_add_file.Equals("") ) 
{ 
    addcmpy(); 
    Microsoft.Office.Interop.Excel.Range range_add = worksheet.get_Range("X"+i.ToString() , "AA" + i.ToString()); 
    while(range_add.Count != 0){ 
    if (Int32.Parse(number_add_file) == 2) 
    { 
     range_add = worksheet.get_Range("X"+i.ToString() , "AE"i.ToString()); 
    } 
    else if (Int32.Parse(number_add_file) == 3) 
    { 
     range_add = worksheet.get_Range("X"i.ToString() , "AI"i.ToString()); 
    } 
    else if (Int32.Parse(number_add_file) == 4) 
    { 
     range_add = worksheet.get_Range("X"i.ToString() , "AM"i.ToString()); 
    } 
    else if (Int32.Parse(number_add_file) == 5) 
    { 
     range_add = worksheet.get_Range("X" i.ToString(), "AQ"i.ToString()); 
    } 

    System.Array values = (System.Array)range_add.Cells.Value; 
    string[] str = ConvertToStringArray(values); 
    for (int l = 0; l < str.Length; l++) 
     Console.WriteLine(l +" "+str[l]); 

    name = str[0]; 
    lang_add = str[1]; 
    price = str[2]; 
    description = str[3]; 

    Console.WriteLine(name + " " + lang_add + " " + price + " " + description); 
    addfile(); 
    name = ""; 
    lang_add = ""; 
    price = ""; 
    description = ""; 
    } 
} 
+0

hmm ...非常に単純なアルゴリズムのように聞こえる。なぜそれで刺すようなことができないのか教えてください。 "怠惰な質問は怠け者の回答で褒められる"、笑... – code4life

+0

後で編集を確認... – Vlasin

答えて

0

あなたは盲目的Convert.ToInt32()を呼び出すのではなく、Int32.TryParseを使用して検討する必要があります - 列Fのセルに数値が含まれていない場合は、あなたのプログラムは、あなたがそうでなければ対処でき例外をスローになるだろう。

質問は少しシンプルなようですか?あなたはあなたの出発点を知っています、あなたはどこまで行くかを知っています(number * 4)と私はあなたがforループを書く方法を知っていると仮定します。他に何かありますか?

+0

私はget_Range()の例を教えてくれますか? forループを使うと、私はどれだけ遠くに行かなければならないのか分かりますが、どのようにしてセルの値を取得できますか? – Vlasin

+0

あなたの答えはまったく関係ありません.. – Vlasin