0

重複の可能性:
Excelファイルからデータを読み取る

C#でExcelスプレッドシートから読み取るのに問題があります。私はAから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]);
}

私の質問は次のとおりです。「number」値に基づいて、Excelで次の4 *「number」行を読み取るにはどうすればよいですか?

例えば:

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

Fのセル値が1なので読みたい(GHIJ)Fのセル値が2の場合読みたい(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 = "";
    }
}
4

1 に答える 1

0

やみくもに呼び出すのではなく、Int32.TryParseの使用を検討することをお勧めしますConvert.ToInt32()。行 F のセルに数値が含まれていない場合、プログラムは、他の方法で処理できる例外をスローします。

質問は少し...簡単に思えますか?あなたは自分の出発点を知っており、どこまで行こうとしているのか ( ) を知っています。また、ループnumber * 4の書き方も知っていると思います。forここに他に何かありますか?

于 2012-03-12T14:10:38.160 に答える