克隆行时出现C#Excel XML错误

我有一个奇怪的问题,我对这个XML主题是新的。
我正在将行添加到应该用Excel“打开”的XML文件中。
现在,我复制一个表格行,并对其进行编辑,然后再将其添加到该表格中。 问题是,如果我在拿到那一行的时候使用line:

  XmlNode row = table.ChildNodes [6] .CloneNode(true); 

我无法打开.xml文件,但是,如果我像这样使用它:

  XmlNode row = table.ChildNodes [6]; 

那么我可以打开.xml文件,但是该行实际上被编辑并移动到底部,也就是说,不会添加新的行。 我所拥有的主要“问题”是理解这里发生的事情,因为当我尝试打开非工作的.xml文件(当我使用提到的第一行时创build的)时,我在Excel中遇到错误 在这里输入图像说明

另外,Table和WorksheetOptions的位置也被切换(Table在WorksheetOptions之前,所以现在在WorksheetOptions之后)。 这是整个testing代码


    使用系统; 使用System.Collections; 使用System.Xml; 命名空间TIS {类程序{静态无效的主要(string[] args){stringloadPath = @“C:\导出Template.xml”;  string savePath = @“C:\ Users \ Ilija.DESKTOP-5Q1E02D \ Desktop \ Export Template Export.xml”;  XmlDocument xml = new XmlDocument();  xml.Load(loadPath);  XmlNamespaceManager nsmgr = new xmlNamespaceManager(xml.NameTable);  nsmgr.AddNamespace(“ss”,“urn:schemas-microsoft-com:office:spreadsheet”);  XmlElement root = xml.DocumentElement;  XmlNodeList nodeList = root.SelectNodes(“// ss:Worksheet”,nsmgr);  // FIND“PL”SHEET XmlNode nSheet = xml.DocumentElement; 如果(n.Attributes [“ss:Name”]。Value ==“PL”)nSheet = n;  // FIND TABLE NODE&CREATE OTHER NODES XmlNode table = nSheet.ChildNodes [0];  XmlNode row = table.ChildNodes [6] .CloneNode(true);  XmlNode cell = 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 Code”;  row.ChildNodes [4] .ChildNodes [0] .InnerText =“tAmount”;  table.AppendChild(行);  table.AppendChild(LASTROW);  nSheet.AppendChild(表);  //xml.DocumentElement.RemoveChild(xml.DocumentElement.LastChild);  //xml.DocumentElement.AppendChild(nSheet);  xml.Save(savePath);  / * IEnumerator ienum = nodeList.GetEnumerator();  while(ienum.MoveNext()){XmlNode title =(XmlNode)ienum.Current;  Console.WriteLine(title.InnerText);  } // * /// wl(“end”); 等待();  } static void wl(string message =“”){Console.WriteLine(message);  } static void wait(){Console.ReadLine();  }}} 

所以,我的问题是:为什么突然出现这个错误,我能做些什么来防止它/解决它? 我尝试使用Table和WorksheetOptions切换位置,并且不起作用。 我还从原始模板中添加了WorksheetOptions,并且出现了错误。 请记住:我是新来的C#中的XML。 欢迎任何有关如何将行添加到Workbook / Worksheet / Table的build议。

在这里回答我自己的问题。
错误是一个奇怪的。

我不得不尝试编辑.xml文件manualy,并认为excel不会工作,因为我有一个<cell>types的女巫types是数字(<Cell> <Data ss:Type =“Numeric”> <数据> </单元>),我将该数据的值设置为=“”,所以它产生了一个错误。 此外,空行(代码中的lastRow)不是表中的最后一行(我知道,正确的…)。

无论如何,如果你有这样的错误,按照Excel的日志logging,在我的情况下,它是“C:\用户\ Ilija.DESKTOP – 5Q1E02D \应用程序数据\本地\微软\的Windows \ INetCache \ Content.MSO \ BA6D17AD。日志”。 在开始search“运行”中,input%appData%,然后继续执行excel的日志path。 我个人无法看到文件夹\ INetCache \,所以我不得不inputpathmanualy。 日志文件看起来像这样

XML ERROR in Table REASON: Bad Value FILE: C:\Users\Ilija.DESKTOP-5Q1E02D\Desktop\Export Template Export.xml GROUP: Cell TAG: Data VALUE: XML ERROR in Table REASON: Bad Value FILE: C:\Users\Ilija.DESKTOP-5Q1E02D\Desktop\Export Template Export.xml GROUP: Cell TAG: Data VALUE: 

如上所述,错误是VALUE是一个空string。 填充它,它应该工作正常。

Interesting Posts