• <menu id="w2i4a"></menu>
  • logo Aspose.Words開發(fā)者指南

    文檔首頁>>Aspose.Words開發(fā)者指南>>Aspose.Words for .NET使用教程(十一):如何檢測文件格式和檢查格式兼容性?

    Aspose.Words for .NET使用教程(十一):如何檢測文件格式和檢查格式兼容性?


    Aspose.Words無需Microsoft Word也可在任何平臺上滿足Word文檔的一切操作需求。本文將與大家分享如何檢測文件格式和檢查格式兼容性。

    下載Aspose.Words for .NET最新試用版

    有時我們需要在打開文件之前檢測文檔文件的格式,因為文件擴(kuò)展名不能保證文件內(nèi)容是合適的。

    例如,大家都知道,Crystal Reports通常以RTF格式輸出文檔,但文檔的擴(kuò)展名卻是.doc。因此,如果你不確定文件的實際內(nèi)容是什么并且希望在打開文件過程中不要出現(xiàn)異常,則可以使用FileFormatUtil.DetectFileFormat方法。 這是一個靜態(tài)方法,它接受包含文件數(shù)據(jù)的文件名或流對象。該方法返回一個FileFormatInfo對象,該對象包含檢測到的有關(guān)文件類型的信息。

    當(dāng)你處理各種文件格式的多個文檔時,你可能需要將那些可以由Aspose.Words處理的文件和那些不能處理的文件分開。你可能還想知道為什么某些文檔無法處理。

    如果你嘗試將文件加載到Document對象中并且Aspose.Words無法識別文件格式或不支持該格式,Aspose.Words將出現(xiàn)異常。你可以記錄這些異常并對其進(jìn)行分析,但Aspose.Words還提供了一種專門的方法,可以快速確定文件格式,而不需要加載可能有異常的文檔。

    我們將在代碼中執(zhí)行以下步驟,以檢查所選文件夾中所有文件的格式兼容性,并按文件格式將它們排序到適當(dāng)?shù)淖游募A中。

    1. 獲取所選文件夾中所有文件的集合。
    2. 循環(huán)收集。
    3. 對于每個文件:
      • 檢查文件格式。
      • 顯示檢查結(jié)果。
      • 將文件移動到適當(dāng)?shù)奈募A。

    此示例中使用了以下文件。文件名在左側(cè),其描述在右側(cè)。測試支持的文件格式:

    輸入文件 類型
    測試文件(XML).xml FlatOPC OOXML文檔。
    測試文件(WordML).xml Microsoft Word 2003 WordprocessingML文檔。
    測試文件(rtf).rtf 富文本格式文檔。
    測試文件(odt).odt OpenDocument文本格式(OpenOffice Writer)。
    測試文件(MHTML).mhtml MHTML(Web檔案)文檔。
    測試文件(HTML).html HTML文檔。
    測試文件(dotx).dotx Office Open XML WordprocessingML模板。
    測試文件(dot).dot Microsoft Word 97 - 2003模板
    測試文件(docx).docx 沒有宏的Office Open XML WordprocessingML文檔。
    測試文件(docm).docm 有宏的Office Open XML WordprocessingML文檔。
    測試文件(doc).doc Microsoft Word 97 - 2003文檔。

    測試加密文檔:

    輸入文件 類型
    測試文件(enc).doc 加密的Microsoft Word 97 - 2003文檔。
    測試文件(enc).docx 加密的Office Open XML WordprocessingML文檔。

    不支持的文件格式:

    輸入文件 類型
    測試文件(pre97).doc Microsoft Word 95文檔。
    測試文件(JPG).jpg JPEG圖像文件。

    當(dāng)我們處理文件夾中的內(nèi)容時,我們首先要做的是使用Directory類的GetFiles方法(來自System.IO命名空間)獲取此文件夾中所有文件的集合。

    收集完所有文件后,其余工作由Aspose.Words組件中的 FileFormatUtil.DetectFileFormat 方法完成。FileFormatUtil.DetectFileFormat 方法檢查文件格式,但請注意它只檢查文件格式,它不驗證文件格式。 這意味著即使FileFormatUtil.DetectFileFormat 的返回結(jié)果表明此文件格式是受支持的格式之一,也無法保證文件將被順利打開。這是因為FileFormatUtil.DetectFileFormat 方法只讀取文件格式的部分?jǐn)?shù)據(jù),足以檢查文件格式,但不足以完成驗證。 以下代碼演示檢查文件格式:

    using System;
    using System.Collections;
    using System.IO;
    
    using Aspose.Words;
    using Aspose.Words.Tables;
    using System.Diagnostics;
    
    namespace Aspose.Words.Examples.CSharp.Loading_Saving
    {
        class CheckFormat
        {
            public static void Run()
            {
                // ExStart:CheckFormatCompatibility
                // The path to the documents directory.
                string dataDir = RunExamples.GetDataDir_LoadingAndSaving();
    
                string supportedDir = dataDir + "OutSupported";
                string unknownDir = dataDir + "OutUnknown";
                string encryptedDir = dataDir + "OutEncrypted";
                string pre97Dir = dataDir + "OutPre97";
    
                // Create the directories if they do not already exist
                if (Directory.Exists(supportedDir) == false)
                    Directory.CreateDirectory(supportedDir);
                if (Directory.Exists(unknownDir) == false)
                    Directory.CreateDirectory(unknownDir);
                if (Directory.Exists(encryptedDir) == false)
                    Directory.CreateDirectory(encryptedDir);
                if (Directory.Exists(pre97Dir) == false)
                    Directory.CreateDirectory(pre97Dir);
    
                // ExStart:GetListOfFilesInFolder
                string[] fileList = Directory.GetFiles(dataDir);
                // ExEnd:GetListOfFilesInFolder
                // Loop through all found files.
                foreach (string fileName in fileList)
                {
                    // Extract and display the file name without the path.
                    string nameOnly = Path.GetFileName(fileName);
                    Console.Write(nameOnly);
                    // ExStart:DetectFileFormat
                    // Check the file format and move the file to the appropriate folder.
                    FileFormatInfo info = FileFormatUtil.DetectFileFormat(fileName);
                    
                    // Display the document type.
                    switch (info.LoadFormat)
                    {
                        case LoadFormat.Doc:
                            Console.WriteLine("\tMicrosoft Word 97-2003 document.");
                            break;
                        case LoadFormat.Dot:
                            Console.WriteLine("\tMicrosoft Word 97-2003 template.");
                            break;
                        case LoadFormat.Docx:
                            Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Free Document.");
                            break;
                        case LoadFormat.Docm:
                            Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Enabled Document.");
                            break;
                        case LoadFormat.Dotx:
                            Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Free Template.");
                            break;
                        case LoadFormat.Dotm:
                            Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Enabled Template.");
                            break;
                        case LoadFormat.FlatOpc:
                            Console.WriteLine("\tFlat OPC document.");
                            break;
                        case LoadFormat.Rtf:
                            Console.WriteLine("\tRTF format.");
                            break;
                        case LoadFormat.WordML:
                            Console.WriteLine("\tMicrosoft Word 2003 WordprocessingML format.");
                            break;
                        case LoadFormat.Html:
                            Console.WriteLine("\tHTML format.");
                            break;
                        case LoadFormat.Mhtml:
                            Console.WriteLine("\tMHTML (Web archive) format.");
                            break;
                        case LoadFormat.Odt:
                            Console.WriteLine("\tOpenDocument Text.");
                            break;
                        case LoadFormat.Ott:
                            Console.WriteLine("\tOpenDocument Text Template.");
                            break;
                        case LoadFormat.DocPreWord60:
                            Console.WriteLine("\tMS Word 6 or Word 95 format.");
                            break;
                        case LoadFormat.Unknown:
                        default:
                            Console.WriteLine("\tUnknown format.");
                            break;
                    }
                    // ExEnd:DetectFileFormat
    
                    // Now copy the document into the appropriate folder.
                    if (info.IsEncrypted)
                    {
                        Console.WriteLine("\tAn encrypted document.");
                        File.Copy(fileName, Path.Combine(encryptedDir, nameOnly), true);
                    }
                    else
                    {
                        switch (info.LoadFormat)
                        {
                            case LoadFormat.DocPreWord60:
                                File.Copy(fileName, Path.Combine(pre97Dir, nameOnly), true);
                                break;
                            case LoadFormat.Unknown:
                                File.Copy(fileName, Path.Combine(unknownDir, nameOnly), true);
                                break;
                            default:
                                File.Copy(fileName, Path.Combine(supportedDir, nameOnly), true);
                                break;
                        }
                    }
                }
                // ExEnd:CheckFormatCompatibility
                Console.WriteLine("\nChecked the format of all documents successfully.");
            }
        }
    }

    為你推薦:Aspose專題 - Aspose最新資源合集


    想要購買正版授權(quán),或者獲取更多Aspose.Words相關(guān)信息的朋友可以點擊" 咨詢在線客服 "~
    慧都315特惠
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();