none
提取循环中的数据问题? RRS feed

  • 问题

  •             Console.WriteLine("give me a date");
                int geshu = int.Parse(Console.ReadLine());
                int a;
                for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;
                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);

                }



    这个是我的一个循环代码,在输出时string A获得的循环数据,我希望可以获得如下独立的数据:

    第一个数据 A1=
    第二个数据 A2=
    第三个数据 A3=
    ...............  An=

    这些独立出来的数据,我还要用于其他代码的计算。

    2010年3月16日 15:59

答案

  • 你这样试试:
               string[] resultArray=new string[geshu-1]            for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;
                    resultArray[a-1]=A;
                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);             }
    你想用的时候,直接resultArray[0]...
    周雪峰
    2010年3月17日 6:53
    版主
  • 给你一个万能版的:

                HashTable ht = new HathTable();  // 定义一个表放数据

                Console.WriteLine("give me a date");
                int geshu = int.Parse(Console.ReadLine());
                int a;
                for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;

                    ht.Add("A" + a, A); // 把数据放到表里

                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);

                }


    要用的时候:

                   string str = (string)ht["A3"]; // 取数据,索引是当时放进去的值(上面是 "A" + a)
                   // 任意类型,用(类型)ht[""]的方式转换就可以了,当然要和你放进去的类型一样才行。


    霸王
    2010年3月17日 8:50

全部回复

  • Dictionary, Hashtable, List ,应该都能实现吧,只是要保存一个 string=string的数据列表咯

    Dictionary<string, string> 没索引,只能遍历
    HashTable 有索引,但开销大点
    List<string> 数组索引作为数字,即 An 里的n,也可以实现,最高效

    霸王
    2010年3月16日 20:08
  • Dictionary, Hashtable, List ,应该都能实现吧,只是要保存一个 string=string的数据列表咯

    Dictionary<string, string> 没索引,只能遍历
    HashTable 有索引,但开销大点
    List<string> 数组索引作为数字,即 An 里的n,也可以实现,最高效

    霸王

    能不能帮我写个代码段,我是菜鸟,入门级别的。
    万分感谢。拜托了!谢谢。
    2010年3月17日 1:59
  •     using System.Collections;

    Hashtable ht=new Hashtable();
      ht.Add("A1","e");
      ht.Add("A2","a");
      ht.Add("A3","c");
      ht.Add("A4","b");
    for(DictionaryEntry de in ht) 
     {
       Console.WriteLine(de.Key);de.Key对应于keyvalue键值对key
       Console.WriteLine(de.Value);de.Key对应于keyvalue键值对value
     }

    努力+方法=成功
    2010年3月17日 3:14
  •     using System.Collections;

    Hashtable ht=new Hashtable();
      ht.Add("A1","e");
      ht.Add("A2","a");
      ht.Add("A3","c");
      ht.Add("A4","b");
    for(DictionaryEntry de in ht) 
     {
       Console.WriteLine(de.Key);de.Key对应于keyvalue键值对key
       Console.WriteLine(de.Value);de.Key对应于keyvalue键值对value
     }

    努力+方法=成功
    我是菜鸟,麻烦能不能详细一点。
    刚刚测试了下,是foreach.谢谢。我在测试乐下不过不行,我是通过i这个数据的循环,得到excel表格中的A1,A2,A3.....An单元格的数据自动读取,我要是这个数据。你给我的这个我不知道怎么去实现。
    2010年3月17日 4:14
  • 你好!
         请问你自己写的代码遇到了怎样的问题呢?有什么可以帮助你的呢?
    周雪峰
    2010年3月17日 5:59
    版主
  • 你好!
         请问你自己写的代码遇到了怎样的问题呢?有什么可以帮助你的呢?
    周雪峰

                for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;
                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);

                }
    我是通过 i 这个数据的循环,得到excel表格中的A1,A2,A3.....An单元格的数据自动读取,这个单元格数据是我想要得到并应用于其他代码计算,目前的状态是我无法分开这些数据我想要A1应用在a代码段中,A2应用在b代码段中,大致就是这样一个希望的结果。

    2010年3月17日 6:05
  • 你好!
         尝试一下在循环外部定义一个数组,把你在循环中获取的数据保存在数组中就可以了!当然使用List<T>,Dictionary等集合也可以实现!
    周雪峰
    2010年3月17日 6:33
    版主
  • 你好!
         尝试一下在循环外部定义一个数组,把你在循环中获取的数据保存在数组中就可以了!当然使用List<T>,Dictionary等集合也可以实现!
    周雪峰

    怎么实现阿,我是菜鸟,能不能给我一个代码事例?
    你这么说,我摸不着头脑,实在对不起,我是初学者。为了提高工作效率才学c#语言的。
    2010年3月17日 6:35
  • 你这样试试:
               string[] resultArray=new string[geshu-1]            for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;
                    resultArray[a-1]=A;
                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);             }
    你想用的时候,直接resultArray[0]...
    周雪峰
    2010年3月17日 6:53
    版主
  • 你这样试试:
               string[] resultArray=new string[geshu-1]            for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;
                    resultArray[a-1]=A;
                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);             }
    你想用的时候,直接resultArray[0]...
    周雪峰

    谢谢您,你帮了我大忙了。我马上测试。
    2010年3月17日 6:57
  • 给你一个万能版的:

                HashTable ht = new HathTable();  // 定义一个表放数据

                Console.WriteLine("give me a date");
                int geshu = int.Parse(Console.ReadLine());
                int a;
                for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;

                    ht.Add("A" + a, A); // 把数据放到表里

                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);

                }


    要用的时候:

                   string str = (string)ht["A3"]; // 取数据,索引是当时放进去的值(上面是 "A" + a)
                   // 任意类型,用(类型)ht[""]的方式转换就可以了,当然要和你放进去的类型一样才行。


    霸王
    2010年3月17日 8:50
  • 给你一个万能版的:

                HashTable ht = new HathTable();  // 定义一个表放数据

                Console.WriteLine("give me a date");
                int geshu = int.Parse(Console.ReadLine());
                int a;
                for (a = 1; a < geshu; a++)
                {
       
                    Excel.Range step1 = xSheet.get_Range("A" + a, Missing.Value);
                    string A = (string)step1.Value2;

                    ht.Add("A" + a, A); // 把数据放到表里

                    if (step1.Value2 == null)
                        break;
                    Console.WriteLine("{0}", A);

                }


    要用的时候:

                   string str = (string)ht["A3"]; // 取数据,索引是当时放进去的值(上面是 "A" + a)
                   // 任意类型,用(类型)ht[""]的方式转换就可以了,当然要和你放进去的类型一样才行。


    霸王

    谢谢,我马上测试。我天天在,以后还有很多问题会出现,希望你们一直能帮助我学习。大恩不言谢。
    2010年3月17日 8:51
  • 补充一点,用HashTable 的话理论上你可以把整个excel表都放进去,索引用 "A3", "C9" , "AC103" 等就可以了,而且类型任意,用的时候转一下即可。
    霸王
    2010年3月17日 8:52