在C#中按列读取XML Spread Sheet 2003

我需要阅读一个项目中的XML Spread Sheet 2003,并且对列有问题。

这个例子表明你有模板的王我的数据是:

 |的名字 名字|  SecondName |  ... |  ... 

星期一|  1 |  2 |  3 |  2 

星期二|  0 |  1 |  1 |  ?

星期三|  2 |  ?  |  ?  |  ?

我需要提取每个列中的每一个数据,问题在这里:C#只读行这个XML Spread Sheet,并且这个例子我不知道我怎么能有每个列的确切每个数据。 此外,我不能提前知道的数据。

这是我的代码的开始

var queryPeriodSheet = from worksheet in data.Descendants(ss + "Worksheet") where worksheet.Attribute(ss + "Name").Value == "sheet1" select worksheet; var rows = from row in queryPeriodSheet.Descendants(ss + "Row") select row; 

我需要你的帮助,

谢谢

您需要查看每行的每个单元格元素中的ss:Index属性,因为没有用于空单元格的XML元素。

我使用下面的代码来查找一行中特定单元格中的文本:

  /// <summary> /// /// </summary> /// <param name="rowElement"></param> /// <param name="cellIndex">0-based cell index.</param> /// <returns></returns> public string GetCellData(XmlElement rowElement, int cellIndex) { XmlNodeList cellElements = rowElement.SelectNodes("ss:Cell", xmlnsManager); if (cellElements != null) { int elementIndex = 0; foreach (XmlElement cellElement in cellElements) { // Special case: cells can be skipped. If so, there is a ss:Index attribute that contains the 1-based index of the cell. if (cellElement.HasAttribute("ss:Index")) { elementIndex = Convert.ToInt32(cellElement.GetAttribute("ss:Index")) - 1; } // If cell has been skipped. if (cellIndex < elementIndex) return null; if (cellIndex == elementIndex) return cellElement.InnerText.Trim(); elementIndex++; } } return null; }