VB.NET如何做到打开文件,打开错误格式的文件,未选择文件都有提示

qq_15238669 2018-09-03 09:19:10
openfiledialague里可以做到打开正确的文件,以及if file exist这种来判断是否有文件,那碰到打开错误的文件一般程序直接就报错了。有什么办法把这三个区分开吗?
我现在做到1.正确文件----读取文件(readline)
2.未选择(在打开窗口时就按取消了)------msgbox("请选择文件")
3.选择错误格式的文件(后缀名或者内容错)-----程序报错关闭
求解决3。 让它成为msgbox("请选择正确文件")
...全文
793 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

'在判断完文件格式后,判断其内容,举个纯文本例子
Dim yourstr As String = 你读出的文本
'你需要的关键字顺序
Dim key() As String = {"姓名", "学号", "班级", "成绩"}
'两个arraylist,分别存放原顺序和新顺序
Dim arrkey As New ArrayList
Dim compkey As New ArrayList
For i As Integer = 0 To key.Count - 1
'在文本中寻找,只要匹配第一个搜到的字符串
If yourstr.Contains(key(i)) Then
arrkey.Add(yourstr.IndexOf(key(i), 0, 1).ToString)
compkey.Add(yourstr.IndexOf(key(i), 0, 1).ToString)
Else
'如果key中的关键字没出现在文本中,错误退出
MessageBox.Show("文件中未包含关键字退出")
Exit Sub
End If
Next
'得到两个序号的arraylist,将其中一个排序
'如果不是你要的顺序,sort后应该是不一样的顺序,那么遍历对比必然会出错,即退出
arrkey.Sort()
For i As Integer = 0 To arrkey.Count - 1
If arrkey(i) <> compkey(i) Then
MessageBox.Show("顺序不正确退出")
Exit Sub
End If
Next
'不出错,说明字段顺序无误,成功
MessageBox.Show("成功读取")
'继续你的操作
  • 打赏
  • 举报
回复
引用 4 楼 qq_15238669 的回复:
我补充下,我说的格式错误并不是文件后缀名错误,而是内容错误。
比如我要读取的文件格式是(序号,名字,学号,班级)但是文件内容是(序号,名字,学号,班级,成绩) 这样子格式就不对了,文件自身后缀我无所谓。

你自己应该知道,判断文件是否存在,判断文件扩展名是否正确和判断文件内容是否正确应该是三个判断,前两个都是io操作级别的,最后一个明显是你自己再读取文件后判断的。
秋煞人 2018-09-15
  • 打赏
  • 举报
回复
引用 4 楼 qq_15238669 的回复:
我补充下,我说的格式错误并不是文件后缀名错误,而是内容错误。
比如我要读取的文件格式是(序号,名字,学号,班级)但是文件内容是(序号,名字,学号,班级,成绩) 这样子格式就不对了,文件自身后缀我无所谓。

这种情况是不能用openfiledialague来判断的,你需要读出文件内容来同你需要的格式对比,可以用文件流来做,网上很多,搜一下就可以了
  • 打赏
  • 举报
回复
使用 OpenFileDialog 的 ShowDialog() 方法本身的返回值会告诉你用户选择了还是没有选择文件。当选择了,你自然就知道所选择的文件名,从而也就知道后缀是什么。

这还是要多用点心去理解。不是抄代码。
qq_15238669 2018-09-05
  • 打赏
  • 举报
回复
我补充下,我说的格式错误并不是文件后缀名错误,而是内容错误。
比如我要读取的文件格式是(序号,名字,学号,班级)但是文件内容是(序号,名字,学号,班级,成绩) 这样子格式就不对了,文件自身后缀我无所谓。
threenewbee 2018-09-04
  • 打赏
  • 举报
回复
try
...
catch
... 凡是错误都在这里
qq_26338581 2018-09-04
  • 打赏
  • 举报
回复
Dim FOpenFile As OpenFileDialog FOpenFile = New OpenFileDialog '控制选择文件格式 FOpenFile.Filter = "Excel文件(.xls)|*.xls" '如果选择取消,结束过程; If FOpenFile.ShowDialog = Windows.Forms.DialogResult.Cancel Then ... ... Exit Sub End If '读取文件 ... ...

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧