0

我想将xml文件存储在excel中。为此,我将 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;
  }
4

1 回答 1

0

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

我知道这是一个旧链接,但在这里查看将 xml 数据导入工作簿的方法(使用 xsl)

于 2013-08-13T10:09:19.227 回答