internal XmlElement AppendField(XmlNode rowsNode, int index, string fieldNodeText, string indexAttrText)
{
XmlElement prevField = null, newElement;
foreach (XmlElement field in rowsNode.ChildNodes)
{
string x = field.GetAttribute(indexAttrText);
int fieldIndex;
if(int.TryParse(x, out fieldIndex))
{
if (fieldIndex == index) //Row already exists
{
return field;
}
else if (fieldIndex > index)
{
newElement = rowsNode.OwnerDocument.CreateElement(fieldNodeText, ExcelPackage.schemaMain);
newElement.SetAttribute(indexAttrText, index.ToString());
rowsNode.InsertAfter(newElement, field);
}
}
prevField=field;
}
newElement = rowsNode.OwnerDocument.CreateElement(fieldNodeText, ExcelPackage.schemaMain);
newElement.SetAttribute(indexAttrText, index.ToString());
rowsNode.InsertAfter(newElement, prevField);
return newElement;
}