【发布时间】:2016-02-29 16:10:16
【问题描述】:
我有一个奇怪的问题,我对这个 XML 主题不熟悉。
我正在向 XML 文件中添加行,该文件应该可以使用 Excel“打开”。
现在,我复制一个表行,对其进行编辑,然后再次将其添加到该表中。问题是,如果我在获取该行时使用 line:
XmlNode row = table.ChildNodes[6].CloneNode(true);我无法打开 .xml 文件,但是,如果我这样使用它:
XmlNode row = table.ChildNodes[6 ];然后我可以打开.xml文件,但是行实际上是被编辑并移动到底部的,即没有添加新行。我遇到的主要“问题”是了解这里发生了什么,因为当我尝试打开非工作的 .xml 文件(当我使用提到的第一行时创建的)时,我在 excel 中出现错误
另外,Table 和 WorksheetOptions 的位置也交换了(Table 在 WorksheetOptions 之前,所以现在它在 WorksheetOptions 之后)。这是整个测试代码
使用系统; 使用 System.Collections; 使用 System.Xml; 命名空间 TIS { 课堂节目 { 静态无效主要(字符串 [] 参数) { string loadPath = @"C:\Export Template.xml"; string savePath = @"C:\Users\Ilija.DESKTOP-5Q1E02D\Desktop\Export Template Export.xml"; XmlDocument xml = 新的 XmlDocument(); xml.Load(loadPath); XmlNamespaceManager nsmgr = new xmlNamespaceManager(xml.NameTable); nsmgr.AddNamespace("ss", "urn:schemas-microsoft-com:office:spreadsheet"); XmlElement 根 = xml.DocumentElement; XmlNodeList nodeList = root.SelectNodes("//ss:Worksheet", nsmgr); //找到“PL”表 XmlNode nSheet = xml.DocumentElement; foreach(节点列表中的 XmlNode n) if (n.Attributes["ss:Name"].Value == "PL") nSheet = n; //查找表节点并创建其他节点 XmlNode 表 = nSheet.ChildNodes[0]; XmlNode 行 = table.ChildNodes[6].CloneNode(true); XmlNode 单元格 = row.ChildNodes[0]; XmlNode lastRow = table.LastChild; table.RemoveChild(table.LastChild); //填充节点 row.ChildNodes[0].ChildNodes[0].InnerText = "tID"; row.ChildNodes[1].ChildNodes[0].InnerText = "tENG"; row.ChildNodes[2].ChildNodes[0].InnerText = "tSRB"; row.ChildNodes[3].ChildNodes[0].InnerText = "tItem 代码"; row.ChildNodes[4].ChildNodes[0].InnerText = "tAmount"; table.AppendChild(row); table.AppendChild(lastRow); nSheet.AppendChild(表); //xml.DocumentElement.RemoveChild(xml.DocumentElement.LastChild); //xml.DocumentElement.AppendChild(nSheet); xml.Save(保存路径); /* IEnumerator ienum = nodeList.GetEnumerator(); while (ienum.MoveNext()) { XmlNode 标题 = (XmlNode)ienum.Current; Console.WriteLine(title.InnerText); } //*/// wl("结束"); 等待(); } 静态无效 wl(字符串消息 =“”) { Console.WriteLine(消息); } 静态无效等待() { Console.ReadLine(); } } }所以,我的问题是:为什么会突然出现这个错误,我可以做些什么来防止它/解决它?我尝试使用 Table 和 WorksheetOptions 切换位置,但没有成功。我还从原始模板中添加了 WorksheetOptions,并且错误仍然存在。请记住:我是 C# 中 xml 的新手。欢迎任何有关如何向工作簿/工作表/表格添加行的建议。
【问题讨论】: