0

跟踪 Excel 和 Word 文件版本的最佳方法是什么。

上次修改的日期对我不起作用,因为它会在您将文件复制到新位置后立即更改。

我正在使用 c#。

感谢任何回复。

4

4 回答 4

1

Office 文档中有一个DateLastSaved OLE 文档属性。有几种方法可以获取 Office 文档属性。我更喜欢使用 Micorsoft DSO DLL 来访问这些属性。您可以从http://www.microsoft.com/en-us/download/details.aspx?id=8422获取该文件。

这是使用 DSO DLL 的示例

DSOFile.OleDocumentPropertiesClass oleDocumentPropertiesClass = 
                       new DSOFile.OleDocumentPropertiesClass();
oleDocumentPropertiesClass.Open("C:\\My Documents\\some excel file.xlsx");
MessageBox.Show(oleDocumentPropertiesClass.SummaryProperties.DateLastSaved.ToString());

如果您更喜欢使用 Windows API,这里有一个示例,Reading MS Office XML document properties using WindowsAPI Code Pack failed on server

于 2013-08-30T16:29:44.137 回答
1

也许 Aspose 可以提供帮助:
http ://www.aspose.com/docs/display/wordsnet/Working+with+Document+Properties

我会假设 Open XML SDK 中有类似的东西,但没有检查。

于 2013-08-30T16:13:17.380 回答
1

根据您拥有的用户数量,以及您可能考虑查看正式版本控制工具的审计跟踪的重要性。其中相当一部分为文件数量有限的小型团体提供免费版本,并且 git 或 subversion 等工具是免费的(至少它们可以免费)。这些工具可以为您提供一切,人,日期,时间内容,以及回滚和比较版本等方便的项目......当然可能有点矫枉过正......

于 2013-10-11T21:10:49.487 回答
0

我认为FileInfo的属性LastWriteTime应该解决这个问题

在此示例中,模式可以是“Letter.doc”或“Worksheet.xls”之类的东西

并且PATH_TO_TRAKING_FOLDER是基本文件夹,可以包含您正在跟踪的不同版本的 word/excel 文件

using System.IO;

class Foo
{

    public method Bla()
    {
        DirectoryInfo dir;
        List<FileInfo> lstFiles;
        string pattern ;
        string line ;

            //pattern can be something like "Letter.doc" or "Worksheet.xls"
        pattern = "OfficeFile.extension" ;

            //is the base folder that can contains the different versions of the word/excel files that you are tracking
        dir = new DirectoryInfo("PATH_TO_TRAKING_FOLDER");

        lstFiles = new List<FileInfo>(dir.EnumerateFiles(pattern, SearchOption.AllDirectories).OrderBy(x => x.LastWriteTime) ;

        foreach(FileInfo fi in lstFiles)
        {
            line = Strin.format("{0}:{1}", fi.Name,fi.LastWriteTime) ;
            Console.WriteLine(line) ;
        }
    }
}
于 2013-08-30T16:17:38.087 回答