zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
  • 相关阅读:
    FJUT3565 最大公约数之和(容斥)题解
    FJUT3568 中二病也要敲代码(线段树维护区间连续最值)题解
    BZOJ 2252 矩阵距离
    BZOJ 1047 理想的正方形
    BZOJ 1486 最小圈
    BZOJ 2083 Intelligence test
    BZOJ 1045 糖果传递
    BZOJ 3450 Easy
    BZOJ 4318 OSU!
    BZOJ 1954 The xor-longest Path
  • 原文地址:https://www.cnblogs.com/hewish/p/13186960.html
Copyright © 2011-2022 走看看