代码之家  ›  专栏  ›  技术社区  ›  kaka1234

解析excel数据并创建多维数组

  •  0
  • kaka1234  · 技术社区  · 6 年前

    我有一个excel文件,可以有如下所示的内容。它有动态的行和列。我能从excel上很好地阅读。我想创建一个定制的jarray并从这里返回到我的UI。

    Example1
    id      lotno       stateno
    1       22   
    2       1111     
    5       99   
    7       3           222
    55      0           123
    21                  2
    44                  55
    
    Example2
    id      lotno       stateno  bldgno
    1       22   
    2       1111     
    5       99   
    7       3           222
    55      0           123
    21                  2
    44                  55
    1       23          03        9
    55      33          12        2 
    

    示例2有4:set1:id,lotno;set2:id,lotno,stateno;set3:id,stateno;set3:id,lotno,stateno,bldgno 这些集合都可以根据excel的列进行更改。上面我给出了两个例子,分别有3列和4列。

    现在我想分别解析这些集合,并将一个jarray返回到我的UI。如何解析excel数据。

     using (ExcelPackage package = new ExcelPackage(file.OpenReadStream()))
     {
      int rowCount = worksheet.Dimension.End.Row;
      int colCount = worksheet.Dimension.End.Column;
    
      for (int row = 1; row <= rowCount; row++)
      {
          for (int col = 1; col <= colCount; col++)
          {
            var rowValue = worksheet.Cells[row, col].Value;                 
          } 
      } 
    }
    

     id     lotno       
     1      22   
     2      1111     
     5      99
    
     id     lotno       stateno
     7      3           222
     55     0           123
    
     id     stateno
     21     2
     44     55
    

    感谢您的任何意见。

    1 回复  |  直到 6 年前
        1
  •  0
  •   LosManos    6 年前

    如果您没有那么多的列,并且知道有多少列,我会从循环行两次开始。一次捕捉每一组开始和结束的地方。然后我会再次循环行并收集数据。

    因为你知道列的数目并且它们少于32,所以给它们一个像1,2,4,8,16这样的数字。。。我们称之为阿尔法。二进制,表示一行最多32位。如果你把每一行的字母加在一起,每一列都有一个值,你就得到一个 int 告诉您每行中填充了哪一列。为每行存储该值。

    现在开始循环2。再次循环行。只要α是相同的,你就在同一组。当Alpha改变时,创建一个新的集合并填充它。

    这将是一些命中和失误,而你发挥,但问题不是太难。
    然后当你决定有很多很多列。。。你可以选择另一种方法来获得Alpha。当你排了很多队。。。你选择了一种方法。但我建议你从我描述的开始。