从Excel电子表格读取数据 [英] Reading data from an Excel Spreadsheet

查看:144
本文介绍了从Excel电子表格读取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:
从Excel文件中读取数据

Possible Duplicate:
Read data from Excel files

从C#中的Excel电子表格中读取时遇到一些麻烦. 我有这段代码,可以读取从A到X的每个单元格.

I'm having some trouble reading from an Excel spreadsheet in C#. I have this code which I read every cell from A to 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 *数字"行?

My question is: How could i read next 4 * "number" rows in excel based on "number" value ?

例如:

 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's cell value is 1 so I would like to read ( G H I J) If F's cell value is 2 the I would like to read ( G H I J K L M N)

 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 = "";
    }
}

推荐答案

您可能要考虑使用

You may want to consider using Int32.TryParse instead of blindly calling Convert.ToInt32() - if the cell in row F doesn't contain a number, your program's going to throw an exception that you could otherwise deal with.

问题似乎有点...简单吗?您知道起点,知道要走多远(number * 4),我假设您知道如何编写for循环.这里还有其他东西吗?

The question seems a bit... simple? You know your starting point, you know how far you're looking to go (number * 4) and I assume you know how to write a for loop. Is there something else here?

这篇关于从Excel电子表格读取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆