将文本框添加到 Excel 工作表

本文关键字:Excel 工作 添加 文本 | 更新日期: 2023-09-27 18:31:13

我是stackoverflow的新手,这是我的第一篇文章。我正在处理一个项目,我选择从Excel工作表中选择数据并将其粘贴到另一个包含模板的Excel中。所选数据存储在中间 XML 中,该中间 XML 存储在单独的 Excel 工作表中。由于 excel 单元格有 32767 个字符的字符限制,因此 XML 被拆分为 32767 个字符的子字符串,然后每个子字符串存储在不同的单元格中。问题是在读取时,当所有字符串都连接起来以获得完整的xml时,它正在损坏。所以我想用文本框来代替存储这个xml。因为文本框的字符限制相当大。所以我想向 Excel 工作表添加一个文本框控件。我正在使用 C#。怎么做?提前谢谢。

下面是正在使用的现有代码。

  private XmlDocument GetXml()
  {
      Excel.Workbook WB = Globals.ThisAddIn.Application.ActiveWorkbook;
      Excel.Worksheet ws = null;
      XmlDocument xmlDoc = new XmlDocument();
      string strXml = string.Empty;
      int XmlColumn = 1;
      try
      {
          ws = WB.Sheets["XML"];
          while (ws.Cells[XmlColumn, 1].Value != null)
          {
              strXml = strXml + ws.Cells[XmlColumn, 1].Value.ToString();
              XmlColumn++;
          }
          if (strXml != "")
              xmlDoc.LoadXml(strXml);
          else
          {
              XmlNode RootNode = xmlDoc.CreateElement("R");
              XmlNode TaggingXmlDocNode = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
              xmlDoc.AppendChild(TaggingXmlDocNode);
              XmlNode RawExcel = xmlDoc.CreateElement("RawExcel");
              RawExcel.InnerText = Globals.ThisAddIn.Application.ActiveWorkbook.Name;
              RootNode.AppendChild(RawExcel);
              xmlDoc.AppendChild(RootNode);
              ws.Cells[1, 1] = xmlDoc.OuterXml;
          }
      }
      catch
      {
          xmlDoc = null;
      }
      return xmlDoc;
  }
  private void SaveXml(XmlDocument xmlDoc)
  {
      Excel.Workbook WB = Globals.ThisAddIn.Application.ActiveWorkbook;
      Excel.Worksheet ws = null;
      string strXml = string.Empty;
      if (xmlDoc != null)
      {
          strXml = xmlDoc.OuterXml;
          ws = WB.Sheets["XML"];
          int XmlColumn = 1;
          string Temp = strXml;
          for (int Len = 0; Len < strXml.Length; Len = Len + 32700, XmlColumn++)
          {
              if (Temp.Length >= 32700)
              {
                  string s = Temp.Substring(0, 32699);
                  ws.Cells[XmlColumn, 1] = s.Substring(0, s.LastIndexOf('>') + 1);
                  int EndPoint = s.LastIndexOf('>');
                  Temp = Temp.Substring(EndPoint + 1);
              }
              else
              {
                  ws.Cells[XmlColumn, 1] = Temp;
              }
          }
      }
      else
      {
          xmlDoc = new XmlDocument();
          XmlNode RootNode = xmlDoc.CreateElement("R");
          XmlNode TaggingXmlDocNode = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
          xmlDoc.AppendChild(TaggingXmlDocNode);
          XmlNode RawExcel = xmlDoc.CreateElement("RawExcel");
          RawExcel.InnerText = Globals.ThisAddIn.Application.ActiveWorkbook.Name;
          RootNode.AppendChild(RawExcel);
          xmlDoc.AppendChild(RootNode);
          ws = (Excel.Worksheet)WB.Sheets.Add(After: WB.Sheets[WB.Sheets.Count]);
          ws.Name = "XML";
          ws.Cells[1, 1] = xmlDoc.OuterXml;
          //ws.Visible = Excel.XlSheetVisibility.xlSheetVeryHidden;              
      }
      WB.Save();
  }

将文本框添加到 Excel 工作表

我尝试向工作表添加一个文本框并将数据写入其中。但这无济于事,因为 excel 工作表上的文本框具有类似于 excel 单元格的 32767 个字符的字符限制。