以编程方式检索“上次保存的”文件属性

时间:2015-10-17 21:36:19

标签: c# excel file

我正在尝试使用C#作为MVC Web应用程序的一部分来访问“Last Saved By”文件属性。我能够在上次修改日期的文件中获得几乎所有其他属性,并且我甚至使用Shell32来获得非常模糊的属性。

但是,当我检索需要报告的每个文件的审核属性时,我找不到获取“上次保存者”属性的方法。我需要从中获取此数据的文件都是Excel。

2 个答案:

答案 0 :(得分:4)

可以使用WindowsAPICodePack.Shell库读取“Last Saved By”属性。此属性是特定于应用程序的,因此它不存在于某些文件中(例如,它可用于.xls但不能用于.csv)。 “Last Saved By”文件属性名为“LastAuthor”。

我使用nuget获取包和下面的代码来访问该属性:

        string lastSavedBy = null;
        using (var so = ShellObject.FromParsingName(file))
        {
            var lastAuthorProperty =     so.Properties.GetProperty(SystemProperties.System.Document.LastAuthor);
            if (lastAuthorProperty != null)
            {
                var lastAuthor = lastAuthorProperty.ValueAsObject;
                if (lastAuthor != null)
                {
                    lastSavedBy = lastAuthor.ToString();
                }
            }
        }

答案 1 :(得分:1)

您可以在

中访问该媒体资源
Workbook.BuiltinDocumentProperties(7)

从C#访问时,它可能会有索引6。请参阅MSDN documentation

快速验证:即时窗口(Ctrl + G)的Excel VBA编辑器(Alt + F11)您可以输入
? ThisWorkbook.BuiltinDocumentProperties(7)并按Enter键显示该属性。这是Excel的一部分。

还有一部分如何从C#调用Excel,但我不打算介绍这个,你可以找到关于这个主题的数百个答案和例子。

可能更有效的方法就是添加对Microsoft.Office.Tools.Excel Namespace的引用并直接使用,无需Excel。