ตรวจสอบรูปแบบไฟล์และตรวจสอบความเข้ากันได้ของรูปแบบ
บางครั้งก็เป็นสิ่งจำเป็นในการกำหนดรูปแบบของเอกสารก่อนที่จะเปิดเพราะนามสกุลขอ ตัวอย่างเช่นเป็นที่รู้จักกันว่ารายงานคริสตัลมักจะแสดงผลเอกสารในรูปแบบRTFแต่ให้พวกเขนามสกุล.
Aspose.Wordsให้ความสามารถในการรับข้อมูลเกี่ยวกับชนิดแฟ้มเพื่อหลีกเลี่ยงข้อยกเว้นถ้าคุณไม่แน่ใจ.
ตรวจหารูปแบบไฟล์โดยไม่มีข้อยกเว้น
เมื่อคุณจัดการกับเอกสารหลายฉบับในรูปแบบไฟล์ต่างๆ คุณอาจต้องแยกไฟล์ที่สามารถประมวลผลโดย Aspose.Words ออกจากไฟล์ที่ไม่สามารถประมวลผลได้ นอกจากนี้ คุณอาจต้องการทราบว่าเหตุใดจึงไม่สามารถประมวลผลเอกสารบางฉบับได้.
หากคุณพยายามโหลดแฟ้มลงในวัตถุDocumentและAspose.Wordsไม่สามารถรับรู้รูปแบบแฟ้มได้หรือไม่รองรับรูปแบบAspose.Wordsจะโยนข้อยกเว้น คุณสามารถจับข้อยกเว้นเหล่านั้นและวิเคราะห์ได้แต่Aspose.WordsมีวิธีการDetectFileFormatที่ช่วยให้เราสามารถกำหนดรูปแบบไฟล์ได้อย่างรวดเร็วโดยไม่ต้องโหลดเอกสารที่มีข้อยกเว้นที่เป็นไปได้ วิธีนี้ส่งกลับวัตถุFileFormatInfoที่มีข้อมูลที่ตรวจพบเกี่ยวกับชนิดแฟ้ม.
ตรวจสอบความเข้ากันได้ของรูปแบบไฟล์
เราสามารถตรวจสอบความเข้ากันได้ของรูปแบบของไฟล์ทั้งหมดในโฟลเดอร์ที่เลือกและ.
เนื่องจากเรากำลังจัดการกับเนื้อหาในโฟลเดอร์,สิ่งแรกที่เราต้องทำคือการได้รับคอลเลกชันของไฟล์ทั้งหมดในโฟลเดอร์นี้โดยใช้วิธีการGetFilesของDirectory
ชั้น(จากSystem.IO
เนมสเปซ).
ตัวอย่างรหัสต่อไปนี้แสดงวิธีการรับรายการของแฟ้มทั้งหมดในโฟลเดอร์:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::ArrayPtr<System::String> fileList = System::IO::Directory::GetFiles(dataDir); |
เมื่อไฟล์ทั้งหมดถูกรวบรวมแล้วส่วนที่เหลือของงานจะดำเนินการโดยวิธีการDetectFileFormatซึ่งจะตรวจ.
ตัวอย่างรหัสต่อไปนี้แสดงวิธีการทำซ้ำรายการเก็บรวบรวมของแฟ้มตรวจสอบรูปแบบของแ:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// The path to the documents directory. | |
System::String dataDir = GetInputDataDir_LoadingAndSaving(); | |
System::String supportedDir = dataDir + u"Supported_out"; | |
System::String unknownDir = dataDir + u"Unknown_out"; | |
System::String encryptedDir = dataDir + u"Encrypted_out"; | |
System::String pre97Dir = dataDir + u"Pre97_out"; | |
// Create the directories if they do not already exist | |
if (!System::IO::Directory::Exists(supportedDir)) | |
{ | |
System::IO::Directory::CreateDirectory_(supportedDir); | |
} | |
if (!System::IO::Directory::Exists(unknownDir)) | |
{ | |
System::IO::Directory::CreateDirectory_(unknownDir); | |
} | |
if (!System::IO::Directory::Exists(encryptedDir)) | |
{ | |
System::IO::Directory::CreateDirectory_(encryptedDir); | |
} | |
if (!System::IO::Directory::Exists(pre97Dir)) | |
{ | |
System::IO::Directory::CreateDirectory_(pre97Dir); | |
} | |
System::ArrayPtr<System::String> fileList = System::IO::Directory::GetFiles(dataDir); | |
// Loop through all found files. | |
for (System::String const &fileName: fileList) | |
{ | |
// Extract and display the file name without the path. | |
System::String nameOnly = System::IO::Path::GetFileName(fileName); | |
std::cout << nameOnly.ToUtf8String(); | |
// Check the file format and move the file to the appropriate folder. | |
System::SharedPtr<FileFormatInfo> info = FileFormatUtil::DetectFileFormat(fileName); | |
// Display the document type. | |
switch (info->get_LoadFormat()) | |
{ | |
case LoadFormat::Doc: | |
std::cout << "\tMicrosoft Word 97-2003 document." << std::endl; | |
break; | |
case LoadFormat::Dot: | |
std::cout << "\tMicrosoft Word 97-2003 template." << std::endl; | |
break; | |
case LoadFormat::Docx: | |
std::cout << "\tOffice Open XML WordprocessingML Macro-Free Document." << std::endl; | |
break; | |
case LoadFormat::Docm: | |
std::cout << "\tOffice Open XML WordprocessingML Macro-Enabled Document." << std::endl; | |
break; | |
case LoadFormat::Dotx: | |
std::cout << "\tOffice Open XML WordprocessingML Macro-Free Template." << std::endl; | |
break; | |
case LoadFormat::Dotm: | |
std::cout << "\tOffice Open XML WordprocessingML Macro-Enabled Template." << std::endl; | |
break; | |
case LoadFormat::FlatOpc: | |
std::cout << "\tFlat OPC document." << std::endl; | |
break; | |
case LoadFormat::Rtf: | |
std::cout << "\tRTF format." << std::endl; | |
break; | |
case LoadFormat::WordML: | |
std::cout << "\tMicrosoft Word 2003 WordprocessingML format." << std::endl; | |
break; | |
case LoadFormat::Html: | |
std::cout << "\tHTML format." << std::endl; | |
break; | |
case LoadFormat::Mhtml: | |
std::cout << "\tMHTML (Web archive) format." << std::endl; | |
break; | |
case LoadFormat::Odt: | |
std::cout << "\tOpenDocument Text." << std::endl; | |
break; | |
case LoadFormat::Ott: | |
std::cout << "\tOpenDocument Text Template." << std::endl; | |
break; | |
case LoadFormat::DocPreWord60: | |
std::cout << "\tMS Word 6 or Word 95 format." << std::endl; | |
break; | |
case LoadFormat::Unknown: | |
default: | |
std::cout << "\tUnknown format." << std::endl; | |
break; | |
} | |
// Now copy the document into the appropriate folder. | |
if (info->get_IsEncrypted()) | |
{ | |
std::cout << "\tAn encrypted document." << std::endl; | |
System::IO::File::Copy(fileName, System::IO::Path::Combine(encryptedDir, nameOnly), true); | |
} | |
else | |
{ | |
switch (info->get_LoadFormat()) | |
{ | |
case LoadFormat::DocPreWord60: | |
System::IO::File::Copy(fileName, System::IO::Path::Combine(pre97Dir, nameOnly), true); | |
break; | |
case LoadFormat::Unknown: | |
System::IO::File::Copy(fileName, System::IO::Path::Combine(unknownDir, nameOnly), true); | |
break; | |
default: | |
System::IO::File::Copy(fileName, System::IO::Path::Combine(supportedDir, nameOnly), true); | |
break; | |
} | |
} | |
} | |
แฟ้มจะถูกย้ายไปยังโฟลเดอร์ย่อยที่เหมาะสมโดยใช้วิธีการMove
ของคลาสของFile
จากเนมสเปซSystem.IO
เดียวกัน.
ไฟล์ต่อไปนี้จะใช้ในตัวอย่างข้างต้น ชื่อไฟล์อยู่ทางด้านซ้ายและคำอธิบายของมันอยู่ทางด้านขวา:
กลุ่มของไฟล์ | ป้อนเอกสาร | ชนิด |
---|---|---|
รูปแบบไฟล์ที่รองรับ | Test File (DOC).doc | Microsoft Word95/6.0หรือMicrosoft Word97–2003 เอกสาร. |
Test File (DOT).dot | Microsoft Word95/6.0หรือMicrosoft Word97–2003 เทมเพลต. | |
Test File (DOCX).docx | เปิดสำนักงานXMLเอกสารการประมวลผลเวิร์ดมล.โดยไม่มีแมโคร. | |
Test File (DOCM).docm | เปิดสำนักงานXMLเอกสารการประมวลผลคำด้วยมาโคร. | |
Test File (DOTX).dotx | เปิดสำนักงานXML. | |
Test File (DOTM).dotm | เปิดสำนักงานXML. | |
Test File (XML).xml | เอกสารOOXML. | |
Test File (RTF).rtf | เอกสารรูปแบบข้อความที่อุดมไปด้วย. | |
Test File (WordML).xml | Microsoft Word2003 เอกสารการประมวลผลคำ. | |
Test File (HTML).html | HTMLเอกสาร. | |
Test File (MHTML).mhtml | MHTML(เก็บเว็บ)เอกสาร. | |
Test File (ODT).odt | OpenDocumentข้อความ(OpenOfficeผู้เขียน). | |
Test File (OTT).ott | เทมเพลตเอกสารOpenDocument. | |
ไฟล์ทดสอบ(DocPreWord60).หมอ | Microsoft Word2.0เอกสาร. | |
เอกสารที่เข้ารหัส | Test File (Enc).doc | เข้ารหัสMicrosoft Word95/6.0หรือMicrosoft Word97–2003 เอกสาร. |
Test File (Enc).docx | เปิดสำนักงานเข้ารหัสXMLเอกสารการประมวลผลเวิร์ดมล. | |
รูปแบบไฟล์ที่ไม่สนับสนุน | Test File (JPG).jpg | แฟ้มรูปภาพJPEG. |