我们在C#中有Excel加载项。要支持我们使用Worksheet.CustomProperties的某些功能。我们发现在添加一些自定义属性后,我们正在更改其值。例如,我们通过Add方法设置“1”。在某些时候,我们将相同的值更改为“2”。然后我们保存工作簿并再次打开它。出于某种原因,我们看到“1”而不是“2”。为什么?它看起来我错过了什么,但不知道是什么。 更新:
public class CustomPropertyUtil
{
protected readonly Worksheet Sheet;
public WorkSheetCustomPropertyUtil(Worksheet sheet)
{
this.Sheet = sheet;
}
protected bool Exists(string propertyName)
{
try
{
return Sheet.CustomProperties.Cast<CustomProperty>().Any(c => c.Name == propertyName);
}
catch (System.Runtime.InteropServices.COMException)
{
return false;
}
}
protected object GetValue(string propertyName)
{
CustomProperty property = GetProperty(propertyName);
return property != null ? property.Value : null;
}
protected void SetValue(string propertyName, object value)
{
CustomProperty customProperty = GetProperty(propertyName);
if (customProperty == null)
{
AddCustomProperty(propertyName, value);
}
else
{
customProperty.Value = value;
}
}
private void AddCustomProperty(string propertyName, object value)
{
Sheet.CustomProperties.Add(propertyName, value);
}
protected CustomProperty GetProperty(string propertyName)
{
return Exists(propertyName)
? Sheet.CustomProperties.Cast<CustomProperty>().FirstOrDefault(c => c.Name == propertyName)
: null;
}
}
这是我们管理自定义属性的方式。当我们保存时,我们会做以下事情:
Workbook.SaveAs(filePath, AccessMode: XlSaveAsAccessMode.xlNoChange);
当我在VBA中打开它时,我看到我的CustomProperties没有保存。
答案 0 :(得分:0)
也许我已经过度简化了您的任务,但我设置了自定义属性(例如,将文件保存到Sharepoint文档库时的属性),如下所示:
Excel.Workbook wb;
wb.ContentTypeProperties["Region"].Value = "Northeast";
可能这些属性与您正在讨论的属性不同...这将更改属性,例如,当您单击&#34;文件&#34;选项卡并查看&#34;属性&#34;在最右边的面板中列出。