ตรวจสอบรูปแบบไฟล์และตรวจสอบความเข้ากันได้ของรูปแบบ

บางครั้งก็เป็นสิ่งจำเป็นในการกำหนดรูปแบบของเอกสารก่อนที่จะเปิดเพราะนามสกุลขอ ตัวอย่างเช่นเป็นที่รู้จักกันว่ารายงานคริสตัลมักจะแสดงผลเอกสารในรูปแบบ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.