2015-11-02 34 views
0

我正在寻找一种方法来检索某种在Excel表格中创建的表格对象,然后对其进行操作。C#有没有办法在Excel工作表中获取表格对象

我想是这样的:

Excel.Worksheet activeWorksheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveSheet; 

     foreach (var sheetObject in activeWorksheet.ListObjects) 
     { 
      if ((sheetObject as Excel.TableObject) != null) 
      { 
       var table = (Excel.TableObject)sheetObject; 
      } 

      if ((sheetObject as Excel.DataTable) != null) 
      { 
       var table = (Excel.DataTable)sheetObject; 
      } 

      if ((sheetObject as Excel.PivotTable) != null) 
      { 
       var table = (Excel.PivotTable)sheetObject; 
      } 

      if ((sheetObject as Excel.ModelTable) != null) 
      { 
       var table = (Excel.ModelTable)sheetObject; 
      } 

      if ((sheetObject as Excel.QueryTables) != null) 
      { 
       var table = (Excel.QueryTables)sheetObject; 
      } 
     } 

不幸的是任何该投将返回其他任何东西,然后空。 你知道也许有其他的方式来检索这样的表在C#?

回答

0

要在工作表中创建的表只是工作,我用 '范围' 在以前的回答表明:

 Excel.Worksheet activeWorksheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveSheet; 

     foreach (Excel.ListObject table in activeWorksheet.ListObjects) 
     { 
      Excel.Range tableRange = table.Range; 
      String[] dataInRows = new string[tableRange.Rows.Count]; 

      int i = 0; 

      foreach (Excel.Range row in tableRange.Rows) 
      { 

       for (int j = 0; j < row.Columns.Count; j++) 
       { 
        if (row.Cells[1, j + 1].Value2 != null) 
        { 
         dataInRows[i] = dataInRows[i] + "_" + row.Cells[1, j + 1].Value2.ToString(); 
        } 
       } 

       i++; 
      } 
     } 
相关问题