C# 从Excel电子表格读取数据

C# 从Excel电子表格读取数据,c#,winforms-interop,C#,Winforms Interop,可能重复: 我在用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)

可能重复:

我在用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]);
}
我的问题是:如何根据“数字”值读取excel中接下来的4*“数字”行

例如:

 A B C D E F G H I J
 a a a a a 1 a a a a 
F的单元格值是1,所以我想读取(G H I J) 如果F的单元格值为2,则我希望读取(G H I J K L M N)

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\u add\u file.Equals(“”)
{
addcmpy();
Microsoft.Office.Interop.Excel.Range Range\u add=工作表。获取范围(“X”+i.ToString(),“AA”+i.ToString());
while(range_add.Count!=0){
if(Int32.Parse(number\u add\u file)==2)
{
范围添加=工作表。获取范围(“X”+i.ToString(),“AE”i.ToString());
}
else if(Int32.Parse(number\u add\u file)==3)
{
range\u add=worksheet.get\u range(“X”i.ToString(),“AI”i.ToString());
}
else if(Int32.Parse(number\u add\u file)==4)
{
range\u add=worksheet.get\u range(“X”i.ToString(),“AM”i.ToString());
}
else if(Int32.Parse(number\u add\u file)==5)
{
range_add=工作表.get_range(“X”i.ToString(),“AQ”i.ToString());
}
System.Array values=(System.Array)range\u add.Cells.Value;
字符串[]str=converttostringaray(值);
对于(int l=0;l< /代码> 您可能想考虑使用,而不是盲目调用<代码>转换。totIt32()<代码>——如果行F中的单元格不包含数字,则程序将抛出异常,否则您将无法处理。


这个问题似乎有点。。。简单?你知道你的起点,你知道你要走多远(
number*4
),我假设你知道如何为
循环编写
。这里还有别的吗?

嗯。。。听起来像是一个非常简单的算法。为什么不试一下让我们知道什么不起作用?“懒惰的问题会得到懒惰的回答”,哈哈……你能给我举个get_Range()的例子吗?对于for循环,我知道我必须走多远,但如何才能得到单元格的值?你的答案根本不相关。。
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 = "";
    }
}