Vb.net 显示文件夹中的所有excel文件

Vb.net 显示文件夹中的所有excel文件,vb.net,Vb.net,我想查看文件夹列表框中的所有Excel文件,注意Excel包含多个版本。 我使用了下面的代码,但它不起作用 Dim di As New IO.DirectoryInfo("D:\EXCEL") Dim aryFi As IO.FileInfo() = di.GetFiles("Excel Worksheets|*.xls; *.xlsx; *.xlsm") Dim fi As IO.FileInfo F

我想查看文件夹列表框中的所有Excel文件,注意Excel包含多个版本。 我使用了下面的代码,但它不起作用

   Dim di As New IO.DirectoryInfo("D:\EXCEL")
        Dim aryFi As IO.FileInfo() = di.GetFiles("Excel Worksheets|*.xls; *.xlsx; *.xlsm")
        Dim fi As IO.FileInfo
        For Each fi In aryFi
            ListBox1.Items.Add((fi))
        Next

根据此示例稍作修改:

私有函数GetExcelFiles(ByVal directoryInfo作为IO.directoryInfo)作为IO.FileInfo()
如果(directoryInfo为Nothing),则
抛出新ArgumentNullException(NameOf(directoryInfo))
如果结束
将文件作为IEnumerable(Of IO.FileInfo)=directoryInfo.GetFiles()进行Dim
Dim excelFileExtensions()作为字符串={.xlsx“,.xlsm“,.xlsb“,.xltm“,.xlam“,.xls“,.xla“,.xlb“,.xlc“,.xld“,.xlk“,.xll“,.xlm“,.xlt“,.xlv“,.xlw”}
返回文件。其中(函数(文件)excelFileExtensions.Contains(文件扩展名))
端函数
它的作用是:

  • 从目录信息中获取所有文件
  • 声明要检查的文件扩展名集合
  • 仅返回文件扩展名集合中存在扩展名的文件

  • 重要的是要注意-移动excelFileExtensions使其成为更高范围的私有只读变量可能是值得的。这并不多,但如果您经常运行它,那么它会有所不同。

    这一答案可能需要改进的两点:1)返回类型与声明的函数类型不匹配(请确保设置为新项目的默认值)。2) 最好是使文件扩展名检查不区分大小写,例如
    返回files.Where(函数(文件)excelFileExtensions.Contains(file.extension,StringComparer.InvariantCultureIgnoreCase))
    @AndrewMorton-我总是使用选项Strict on编码,但对于像这样的简单示例,我通常会自由键入它。所以,如果结果是输入错误、无效输入等,我一点也不会感到惊讶。