主要参考地址:https://www.cnblogs.com/chenyangsocool/p/7511161.html
首先下载微软提供的工具:DsoFile (微软官网下载传送门)
读写自定义摘要信息(需要注意,自定义摘要信息只能添加一次,再添加会报错,所以如果对应的name已经存在,只能采用修改的方式添加)
/// <summary> /// 检测该文件属性中是否已经存在指定的自定义属性key /// </summary> /// <param name="file">本地的文件</param> /// <param name="key">自定义的key</param> /// <returns>存在key返回对应的值,不存在key返回string.empty</returns> private static string PropContains(string file, string key) { OleDocumentProperties odp = new OleDocumentProperties(); odp.Open(file); try { //由于不能直接foreach,所以用了for循环 for (int i = 0; i < odp.CustomProperties.Count; i++) { if (odp.CustomProperties[i].Name == key) { return odp.CustomProperties[i].get_Value(); } } } catch (Exception ex) { LogUtil.Error($"{file} 文件处理出错 ex:{ ex.ToString()}"); } finally { odp.Close(); } return string.Empty; } /// <summary> /// 修改自定义属性的属性值(存在则修改,不存在则添加) /// </summary> /// <param name="file">本地的文件</param> /// <param name="key">自定义的key</param> /// <returns>修改成功返回true,不成功返回false</returns> private static void PropChange(string file, string key, string value) { OleDocumentProperties odp = new OleDocumentProperties(); odp.Open(file); try { //由于不能直接foreach,所以用了for循环 for (int i = 0; i < odp.CustomProperties.Count; i++) { if (odp.CustomProperties[i].Name == key) { //为指定自定义属性修改值 odp.CustomProperties[i].set_Value(value); odp.Save(); return; } } //不存在指定属性,则添加 odp.CustomProperties.Add(key, value); odp.Save(); } catch (Exception ex) { LogUtil.Error($"{file} 文件处理出错 ex:{ ex.ToString()}"); } finally { odp.Close(); } }