Word API:防止文件转换

时间:2010-07-10 22:15:32

标签: c# ms-word

我正在使用Microsoft.Office.Interop.Word命名空间中的Documents.Open方法打开word文档。这很好用,除了当我打开一个不是word文档的文件时,它会自动转换为word文档。我想找到一种方法来引发文档的异常不是word文档,在打开文档之前检测文档是否是文档文档,或者检测文档是否在文档被转换之后打开并转换。有没有人对如何做到这一点有任何想法?

1 个答案:

答案 0 :(得分:3)

一个简单的测试是在尝试用Word打开文档之前检查文档文件头中的幻数。

二进制Word文档(.doc)是复合文档,以0xcfd0开头,其中OpenXML文档(.docx)以字符串“PK”开头。

static bool HasComoundDocumentSignature(string filename)
{
    using (BinaryReader br = new BinaryReader(File.Open(filename, FileMode.Open)))
    {
        UInt16 magicNumber = br.ReadUInt16();      
        return magicNumber == 0xcfd0;
    }
}

static bool HasZipSignature(string filename)
{
    using (BinaryReader br = new BinaryReader(File.Open(filename, FileMode.Open)))
    {
        UInt16 magicNumber = br.ReadUInt16();  
        return magicNumber == 0x4b50;
    }
}

static bool HasWordSignature(string filename)
{
    return HasCompoundDocumentSignature(filename) 
        || HasZipSignature(filename); 
}