问题描述:
其实很多人也像我一样为了获取一个文件的原始类型而困惑.我们到底通过什么来判断一个文件的原始类型呢?当然只要能判断一个文件是否为MS的excel类型的文件就足够了.

解决方案 »

  1.   

    LZ知道HTML和excel文件可以互相转换么?
    你把一个HTML文件后缀名改成xls,excel照样能够识别。
      

  2.   

    int i = uploadFileName.LastIndexOf(".");
    string fileExt = uploadFileName.Substring(i);
    if (fileExt != ".xls")
    {
         msgLabel.Text = "您上传的不是Excel文件";
         return false;
    }
      

  3.   

    以前做一直都判断扩展名而已```和netharry() 兄做法一样
      

  4.   

    我猜想也是肯定在文件的某个位置写下了文件的类型.可是没有相关的资料查啊/或者说是这种东西太难找了.能不能给的相信一点呢.或者有关这方面的资料.
    要原始的文件类型,当然WEB控件中的fileupload能够判断一部分文件的原始类型,可是这还是不行,因为我如果我做的是WINFORM程序呢?
      

  5.   

    文本文件EXCEL也是可以打开的啊.一样可以看作是EXCEL文件.如果是那种纯的EXCEL文件,就用文件头判断,取几个字节的二进制代码比较一下就行了.
      

  6.   

    我也试过您说的方法,可是我比较了前呵呵,如果仅仅是EXCEL文件判断的话,的确取前几个BYTE就够了.可是还要考虑到一些类似的文件比如金山的WPS.
    此外就是微软的word excel ppt前60byte都是一样的.从第61开始不同.
    开始的时候仅仅比较了前50个.所以没看出区别来.金山的excel从第58就能把它排除掉了.谢谢各位了.虽然这个方法笨点.但是目前来看是最有效的了.呵呵
    可能还有很多朋友不知道如何去比较文件的二进制码呢.我把我的代码贴出来.老鸟就算了.呵呵谢谢各位朋友了
            /// <summary>
            /// 功能:通过文件头,判断文件的原始类型
            /// </summary>
            /// <param name="longth">
            /// 去文件头的前多少位.别拿负数做试验了.呵呵
            /// </param>
            static void fileFormat(int longth)
            {
                DirectoryInfo dir = new DirectoryInfo(@"../../file");
                FileInfo[] fi = dir.GetFiles();
                foreach (FileInfo f in fi)
                {
                    //输出要比较的文件名
                    //如果和二进制码放到一起就太乱了.所以单独放在外面
                    //这个是很有用的.因为下面读文件的时候可不是跟你在文件夹中排放的顺序一样啊
                    //小鸟们要注意
                    Console.WriteLine("{0}**\t", f.Name);
                }
                foreach (FileInfo f in fi)
                {
                    FileStream fs = new FileStream(f.FullName,FileMode.Open);
                    byte[] by = new byte[longth];
                    fs.Read(by, 0, longth);
                    fs.Close();
                    for (int i = 0; i < longth; i++)
                    {
                        Console.Write("{0}",by[i]);
                    }
                    Console.WriteLine();
                }
            }
      

  7.   

    public bool isExeDllFile(string sFileName) 

    bool xx=false; //default the "sFileName" is not a .exe or .dll file; FileStream fs = new FileStream(sFileName, FileMode.Open, FileAccess.Read); 
    BinaryReader r = new BinaryReader(fs); string bx=""; 
    byte buffer; 
    try 

    buffer=r.ReadByte(); 
    bx=buffer.ToString(); 
    buffer=r.ReadByte(); 
    bx=bx+buffer.ToString(); 

    catch 
    { } r.Close(); 
    fs.Close(); 
    if (bx=="7790" || bx=="8297" || bx=="8075" )//7790:exe 8297:rar 8075:pk 

    xx=true; 
    } return xx; } dll:MZ 
    exe:MZ 
    rar:Rar 
    zip:PK