【问题标题】:Word and Excel file versionsWord 和 Excel 文件版本
【发布时间】:2013-09-03 10:30:20
【问题描述】:

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

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

我正在使用 c#。

感谢任何回复。

【问题讨论】:

  • 也许gitit.net ?
  • 您是在谈论打开文档内的更改跟踪并监控文档何时更改吗?
  • 不,不跟踪更改。

标签: c# excel ms-word ms-office office-2007


【解决方案1】:

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

我认为 Open XML SDK 中有类似的东西,但没有检查。

【讨论】:

    【解决方案2】:

    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 fails on server

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        在本例中,pattern 可以是“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) ;
                }
            }
        }
        

        【讨论】:

        • 如果您在不同版本上计算 HASH 或 CRC 以查看它们是否真的在内容上发生变化,而不仅仅是在日期上,则可以改进这一点
        猜你喜欢
        • 2022-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多