问题描述
vb.net中,要求用户提供的是.xls格式,可是当把不是该格式的文件改后也行,现在问题是我应该如何正确取得该文件的真正格式类型,在校验中将此问题查处,谢谢!
解决方案
解决方案二:
二进制方式读取文件的前几个字节,看是不是xls的文件,不过这样太麻烦,还是你在用的时候try一下,出现异常就异常处理
解决方案三:
这种方法我试过,好不稳定,多个.txt文件,进行读取前两个字节时候,发现他们之间有时候一样,另外一个问题是.doc,.xls文件,他们的前几个字节一样,现在对这种方法已经失去信心,还望高手指点!
解决方案四:
将就一下:PublicClassForm1PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickConsole.WriteLine(Excel.IsValid("g:test.xls"))Console.WriteLine(Excel.IsValid("g:test.xls.ddd"))Console.WriteLine(Excel.IsValid("g:notexists.xls"))Console.WriteLine(Excel.IsValid("g:data.xml"))EndSubEndClassPublicClassExcelPrivateConstConnnectionStringFormatAsString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource={0};ExtendedProperties=""Excel8.0"";"PublicSharedFunctionIsValid(ByValfileAsString)AsBooleanIfNotSystem.IO.File.Exists(file)ThenReturnFalseUsingcnAsNewOleDb.OleDbConnection(String.Format(ConnnectionStringFormat,file))Trycn.Open()ReturnTrueCatchexAsExceptionReturnFalseEndTryEndUsingEndFunctionEndClass
解决方案五:
呵呵够狠,我再去试试
解决方案六:
经过测试,不正确啊,明明是将test.doc--->test.xls而返回值还是true
解决方案七:
是么?
解决方案八:
我的是False
解决方案九:
如果这样,你的还是True,我就没办法了:PublicClassExcelPrivateConstConnnectionStringFormatAsString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource={0};ExtendedProperties=""Excel8.0"";"PublicSharedFunctionIsValid(ByValfileAsString)AsBooleanIfNotSystem.IO.File.Exists(file)ThenReturnFalseUsingcnAsNewOleDb.OleDbConnection(String.Format(ConnnectionStringFormat,file))Trycn.Open()DimtableAsDataTable=cn.GetSchema("Tables")Iftable.Rows.Count>0ThenIftable.Rows(0).Item("TABLE_NAME").ToString.EndsWith("$")Thencn.Close()ReturnTrueEndIfEndIfcn.Close()ReturnFalseCatchexAsExceptionReturnFalseEndTryEndUsingEndFunctionEndClass