我想将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;
}