在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; }