private List<VariableIdentifier> getVariableIdentifiers(WorksheetPart worksheetPart, int startRow, int endRow)
{
//NEW OPENXMLREADER
if (this.VariableIdentifiers == null || this.VariableIdentifiers.Count == 0)
{
OpenXmlReader reader = OpenXmlReader.Create(worksheetPart);
int rowNum = 0;
// read variable rows to get name and id from area variable
while (reader.Read())
{
if (reader.ElementType == typeof(Row))
{
do
{
if (reader.HasAttributes)
rowNum = Convert.ToInt32(reader.Attributes.First(a => a.LocalName == "r").Value);
if (rowNum >= startRow && rowNum <= endRow)
{
Row row = (Row)reader.LoadCurrentElement();
if (row.Hidden == null) VariableIdentifierRows.Add(rowToList(row));
else if (row.Hidden != true) VariableIdentifierRows.Add(rowToList(row));
}
} while (reader.ReadNextSibling() && rowNum < endRow); // Skip to the next row
break;
}
}
// convert variable rows to VariableIdentifiers
if (VariableIdentifierRows != null)
{
foreach (List<string> l in VariableIdentifierRows)
{
//create headerVariables
if (VariableIdentifiers.Count == 0)
{
foreach (string s in l)
{
VariableIdentifier hv = new VariableIdentifier();
hv.name = s;
VariableIdentifiers.Add(hv);
}
}
else
{
foreach (string s in l)
{
int id = Convert.ToInt32(s);
int index = l.IndexOf(s);
VariableIdentifiers.ElementAt(index).id = id;
}
}
}
}
}
if (this.VariableIdentifiers != null) return this.VariableIdentifiers;
else return null;
}