我試圖使用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