Smrf.NodeXL.ExcelTemplate.VertexWorksheetPopulator.ReadEdgeTable C# (CSharp) Method

ReadEdgeTable() protected method

protected ReadEdgeTable ( ListObject oEdgeTable, HashSet oUniqueVertexNames ) : void
oEdgeTable ListObject
oUniqueVertexNames HashSet
return void
    ReadEdgeTable
    (
        ListObject oEdgeTable,
        HashSet<String> oUniqueVertexNames
    )
    {
        Debug.Assert(oEdgeTable != null);
        Debug.Assert(oUniqueVertexNames != null);
        Debug.Assert(oUniqueVertexNames.Count == 0);
        AssertValid();

        // Get the vertex name column ranges.

        Range oVertex1NameRange, oVertex2NameRange;

        if (!ExcelTableUtil.TryGetTableColumnData(oEdgeTable,
                EdgeTableColumnNames.Vertex1Name, out oVertex1NameRange)
            ||
            !ExcelTableUtil.TryGetTableColumnData(oEdgeTable,
                EdgeTableColumnNames.Vertex2Name, out oVertex2NameRange)
            )
        {
            return;
        }

        Int32 iRows = oVertex1NameRange.Rows.Count;

        Debug.Assert(oVertex2NameRange.Rows.Count == iRows);

        // Read the vertex names all at once.

        Object [,] aoVertex1NameValues =
            ExcelUtil.GetRangeValues(oVertex1NameRange);

        Object [,] aoVertex2NameValues =
            ExcelUtil.GetRangeValues(oVertex2NameRange);

        // Loop through the edges.

        for (Int32 iRowOneBased = 1; iRowOneBased <= iRows; iRowOneBased++)
        {
            // Get the vertex names and add them to the HashSet.

            String sVertex1Name, sVertex2Name;

            if ( ExcelUtil.TryGetNonEmptyStringFromCell(aoVertex1NameValues,
                iRowOneBased, 1, out sVertex1Name) )
            {
                oUniqueVertexNames.Add(sVertex1Name);
            }

            if ( ExcelUtil.TryGetNonEmptyStringFromCell(aoVertex2NameValues,
                iRowOneBased, 1, out sVertex2Name) )
            {
                oUniqueVertexNames.Add(sVertex2Name);
            }
        }
    }