我需要将长文档(特定于文档)字符串保存到Excel文档。 由于Office.Core.CustomDocumentProperty.value的长度限制只有255个字符,因此请告知如何克服此限制,或建议其他方式将数据存储在Excel文档中。如何克服自定义文档属性大小限制
(根据我的记忆,一个单元格公式只能存储255字符,所以这不是一个可行的解决方案。)
我需要将长文档(特定于文档)字符串保存到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部件。
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.");
}
}
请指出自定义文档属性的数量是否有大小限制。 – Carson
我不知道答案是什么,但测试(花了我1分钟写完,你自己可以做的)表明我可以安全地写出10,000条长度为255的字符串。如果你需要存储比这更长的东西,我会留给你进一步测试。 –
仅供参考:您也可以将CustomXMLPart用于此存储。这些东西没有尺寸限制(或者很大)。 –
您正在使用什么版本的互操作的(我高度建议更改名称空间
"urn:custom-storage:XXX"
独特和专有的东西,免得你相抵触运行使用同样的技术编写其他软件)。旧版本用于Excel 2003,其限制为255个字符。 – jdwengVSTO for Excel 2010.似乎只有前255个字符被存储... – Carson
您绝对可以在Excel 2010中的单元格中存储**超过255个字符**文本。[Excel规范和限制文档](https:/ /support.office.com/en-us/article/Excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3#ID0EBABAAA=Excel_2010)指出:*“单元格可包含的字符总数:32,767字符“* –