在c#中拆分xml字符串

时间:2013-08-13 09:59:25

标签: c# xml excel

我想在excel中存储xml文件。为此,我将xml转换为字符串并将其存储在单元格中。由于excel单元格不能支持超过32767个字符,所以我根据字符数分割了xml,并将分割的xml存储在不同的单元格中。但问题是,在读取xml时,由于xml被破坏而发生错误。这是代码。任何帮助都会很棒。我想知道是否可以建议任何新方法。

  private void SaveXml(XmlDocument xmlDoc)
  {
      Excel.Workbook WB = Globals.ThisAddIn.Application.ActiveWorkbook;
      string strXml = string.Empty;
      if (xmlDoc != null)
          strXml = xmlDoc.OuterXml;
      else
          return;
      Excel.Worksheet ws = null;
      try
      {
          ws = WB.Sheets["XML"];
      }
      catch
      {
          ws = (Excel.Worksheet)WB.Sheets.Add(After: WB.Sheets[WB.Sheets.Count]);
          ws.Name = "XML";
          WB.Save();
      }
      int MergeCount = 1;
      if (strXml.Length > 32700)
      {
          while (strXml.Length > 32700)
          {
              ws.Cells[MergeCount, 1] = strXml.Substring(0, 32699);
              strXml = strXml.Substring(32700);
              MergeCount++;
          }
          ws.Cells[MergeCount, 1] = strXml;
      }
      else
          ws.Cells[1, 1] = strXml;
  }

  private XmlDocument GetXml()
  {
      Excel.Workbook WB = Globals.ThisAddIn.Application.ActiveWorkbook;
      XmlDocument xmlDoc = new XmlDocument();
      string strXml = string.Empty;
      int XmlColumn = 1;
      try
      {
          Excel.Worksheet ws = WB.Sheets["XML"];
          while (ws.Cells[XmlColumn, 1].Value != null)
          {
              strXml = strXml + ws.Cells[XmlColumn, 1].Value.ToString();
              XmlColumn++;
          }
          xmlDoc.LoadXml(strXml);
      }
      catch
      {
          MessageBox.Show("Xml not found.");
      }
      return xmlDoc;
  }

1 个答案:

答案 0 :(得分:0)

让我想知道你为什么要在一个单元格中存储一个xml文件...这似乎是一件奇怪的事情...你有关于拆分它们的问题是它不再是一个有效的xml方案...

我知道这是一个旧链接,但take a look here用于将xml数据导入工作簿(使用xsl)