VSTO保存自定义数据到工作簿

Posted hewish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VSTO保存自定义数据到工作簿相关的知识,希望对你有一定的参考价值。

刚开始学习VBA的时候,保存自定义数据用的隐藏工作表;后来学了VSTO,把自定义数据保存到XML文件中;最近继续深入学习,发现可以直接在xlsx文件中保存自定义数据,这里就列出使用方法。

除了以上几种保存方式,还可以保存为JSON格式,或者直接在xlsx文件中写入xml。各种方式都有适合的应用场景,应该根据应用场景选择合适的技术。

直接存储到文档使用的是CustomDocumentProperties属性,Excel参考文档链接:https://docs.microsoft.com/zh-cn/office/vba/api/excel.workbook.customdocumentproperties

以下是C# 代码


/// <summary>
/// 写入自定义字符串
/// </summary>
/// <param name="WBK">工作簿</param>
/// <param name="ValueStr">对应值</param>
/// <param name="NameStr">名称</param>
public void WriteDocumentProperties(Excel.Workbook WBK,string ValueStr,string NameStr)
{
    Microsoft.Office.Core.DocumentProperties properties;
    properties = (Microsoft.Office.Core.DocumentProperties)WBK.CustomDocumentProperties;

    if (ReadDocumentProperty(WBK,NameStr) != null)
    {
        properties[NameStr].Delete();
    }

    properties.Add(NameStr, false,Microsoft.Office.Core.MsoDocProperties.msoPropertyTypeString,ValueStr);
}

/// <summary>
/// 读取自定义字符串
/// </summary>
/// <param name="WBK">工作簿</param>
/// <param name="NameStr">名称</param>
/// <returns>读取不到时返回null</returns>
public string ReadDocumentProperty(Excel.Workbook WBK,string NameStr)
{
    Microsoft.Office.Core.DocumentProperties properties;
    properties = (Microsoft.Office.Core.DocumentProperties)WBK.CustomDocumentProperties;

    foreach (Microsoft.Office.Core.DocumentProperty prop in properties)
    {
        if (prop.Name == NameStr)
        {
            return prop.Value.ToString();
        }
    }
    return null;
}

以上是关于VSTO保存自定义数据到工作簿的主要内容,如果未能解决你的问题,请参考以下文章

找不到自定义程序集时如何立即关闭/关闭 Excel VSTO 工作簿

VSTO SaveAs 文件被锁定

VSTO学习之路:学习使用Epplus

VSTO学习之路:学习使用Epplus——读写VBA代码

将 Js 加载项添加到由 VSTO 加载项创建的自定义功能区选项卡

【OFFICE 365】Power Query 多工作簿合并