gpt4 book ai didi

c# - 如何克服自定义文档属性大小限制

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:39 25 4
gpt4 key购买 nike

我需要将长(特定于文档)字符串保存到 Excel 文档中。由于 Office.Core.CustomDocumentProperty.value 的长度限制仅为 255 个字符,请告知如何克服此限制,或建议其他在 Excel 文档中存储数据的方法。

(我记得,一个单元格公式只能存储 255 个字符,所以这不是一个可行的解决方案。)

最佳答案

只需将您的值拆分为多个属性即可。这样的事情会起作用。

private static void WriteCustomDocumentProperty(Workbook workbook, string name, string value)
{
dynamic customDocumentProperties = workbook.CustomDocumentProperties;
var numParts = value.Length/255 + (value.Length%255 != 0 ? 1 : 0);
for (var i = 0; i < numParts; ++i)
{
var part = value.Substring(i*255, Math.Min(255, value.Length - i*255));
customDocumentProperties.Add(name + "." + i, false, MsoDocProperties.msoPropertyTypeString, part);
}
customDocumentProperties.Add(name + ".Count", false, MsoDocProperties.msoPropertyTypeNumber, numParts);
}

private static string ReadCustomDocumentProperty(Workbook workbook, string name)
{
dynamic customDocumentProperties = workbook.CustomDocumentProperties;
var numParts = Convert.ToInt32(customDocumentProperties[name + ".Count"].Value);
var value = new StringBuilder();
for (var i = 0; i < numParts; ++i)
value.Append(customDocumentProperties[name + "." + i].Value);
return value.ToString();
}

根据字符串的大小,这可能会很慢。更好的选择可能是使用自定义 XML 部件。 (我强烈建议将命名空间 “urn:custom-storage:XXX” 更改为独特和专有的东西,以免您与使用相同技术编写的其他软件发生冲突。)

private static void WriteCustomDocumentProperty(Workbook workbook, string name, string value)
{
var ns = "urn:custom-storage:" + name;
var document = new XDocument(new XElement(XName.Get("custom-storage", ns), value));
var xmlValue = document.ToString();
workbook.CustomXMLParts.Add(xmlValue);
}

private static string ReadCustomDocumentProperty(Workbook workbook, string name)
{
var ns = "urn:custom-storage:" + name;
var parts = workbook.CustomXMLParts.SelectByNamespace(ns);
switch (parts.Count)
{
case 0:
return null;
case 1:
return XDocument.Parse(parts[1].XML).Root.Value;
default:
throw new ApplicationException("Duplicate part in workbook.");
}
}

关于c# - 如何克服自定义文档属性大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42120915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com