我试图使用C#作为MVC Web应用程序的一部分访问'Last Saved By'文件属性。我可以从文件的最后修改日期到所有者获得几乎所有其他属性,并且我甚至使用Shell32来获取真正晦涩难懂的属性。以编程方式检索'Last Saved By'文件属性
但是,当我检索每个需要报告的文件的审计属性时,我无法找到“Last Saved By”属性的方法。我需要从这些数据获取这些数据的文件都是Excel。
我试图使用C#作为MVC Web应用程序的一部分访问'Last Saved By'文件属性。我可以从文件的最后修改日期到所有者获得几乎所有其他属性,并且我甚至使用Shell32来获取真正晦涩难懂的属性。以编程方式检索'Last Saved By'文件属性
但是,当我检索每个需要报告的文件的审计属性时,我无法找到“Last Saved By”属性的方法。我需要从这些数据获取这些数据的文件都是Excel。
可以使用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();
}
}
}
不适用于.docx。 – Jonah
可以在
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。
那场Excel文件,而不是文件系统属性的一部分。您可能需要使用Excel来读取值。 – DavidG
欢迎来到[so]。你确切的需求是什么?你想知道Excel对象模型中的值存储在哪里?或者你有问题以编程方式从C#访问Excel?请点击[编辑]并缩小您的问题至特定问题,目前它太宽泛。 – miroxlav
谢谢DavidG。我开始认为帽子可能就是这种情况。我试图不使用COM,因为我们需要将其添加到我们的新Web服务器 – Wheels