2015-10-17 52 views
0

我试图使用C#作为MVC Web应用程序的一部分访问'Last Saved By'文件属性。我可以从文件的最后修改日期到所有者获得几乎所有其他属性,并且我甚至使用Shell32来获取真正晦涩难懂的属性。以编程方式检索'Last Saved By'文件属性

但是,当我检索每个需要报告的文件的审计属性时,我无法找到“Last Saved By”属性的方法。我需要从这些数据获取这些数据的文件都是Excel。

+3

那场Excel文件,而不是文件系统属性的一部分。您可能需要使用Excel来读取值。 – DavidG

+1

欢迎来到[so]。你确切的需求是什么?你想知道Excel对象模型中的值存储在哪里?或者你有问题以编程方式从C#访问Excel?请点击[编辑]并缩小您的问题至特定问题,目前它太宽泛。 – miroxlav

+0

谢谢DavidG。我开始认为帽子可能就是这种情况。我试图不使用COM,因为我们需要将其添加到我们的新Web服务器 – Wheels

回答

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(); 
       } 
      } 
     } 
+0

不适用于.docx。 – Jonah

1

可以在

Workbook.BuiltinDocumentProperties(7) 

访问属性也许从C#访问时就会有指数6。请参阅MSDN documentation

快速验证:在Excel VBA编辑器(ALT + F11)的立即窗口(Ctrl + G),你可以键入
? ThisWorkbook.BuiltinDocumentProperties(7)并按下回车键来显示属性。这是Excel的一部分。

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

也许更有效的可以只是添加引用Microsoft.Office.Tools.Excel Namespace和直接工作,没有Excel。

+0

感谢您的回答。如果我不能使用更通用的解决方案,我会使用这个答案。 – Wheels

+0

@Wheels - 如果您添加的答案对您更有帮助,请随时将其标记为接受的答案,而不是我的答案。 – miroxlav