如何指定打开 excel 文件的字符串路径?

How to specify string path for opening excel file?

知道 excel 文件的文件名将始终更改或至少插入最近保存的 excel,我将如何指定用于打开 excel 文件的字符串路径] 该文件夹中的文件到字符串路径?例如,

string PATH = @"C:\myFileNameWillAlwaysCHange.xlms or mostRecentFile.xlms";
string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PATH + ";Extended Properties=Excel 12.0";

我想知道 excel 文件所在的文件夹是否将是唯一的 excel 文件,如果有一种方法可以根据任何(仅)excel 该文件夹中的文件并将其插入字符串路径?

你可以这样做

string PATH = Directory.GetFiles("C:\", "*.xlms").Single();

string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PATH + ";Extended Properties=Excel 12.0";

如果您不希望它在找到更多文件时抛出异常,请将 Single 替换为 First
如果您不希望它在没有匹配文件时抛出异常,请将 Single 替换为 FirstOrDefault 并添加 null check


编辑

获取最新文件:

string PATH = Directory.GetFiles("C:\", "*.xlms").Select(f => new FileInfo(f)).OrderByDescending(fi => fi.CreationTime).First().FullName

根据我从您的问题中收集到的信息,您正在寻找 Excel 文件的路径,该文件应该是给定目录中唯一的此类文件。在这种情况下,您可以这样做:

string path= Directory.GetFiles("C:\YourDirectory", "*.xlms").Single();
string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0";

这将在给定目录中获取具有给定文件扩展名的文件,然后通过对其执行 Single() 调用来断言只有一个。如果文件夹中存在多个这样的文件,那么您将得到 InvalidOperationException.

编辑 要获取最新的文件(我选择按创建时间排序,但如果您愿意,也可以使用修改日期),您可以这样做:

DirectoryInfo info = new DirectoryInfo("C:\YourDirectory");

string path = info.GetFiles("*.xlms").OrderByDescending (fi => fi.CreationTimeUtc).First().FullName;

这没有异常处理,所以如果 First() 调用没有 return 任何东西,您将需要处理它。

我了解到您正在寻找一个文件夹中的所有 Excel 个文件。

这是代码:

        try
        {
        string PATH = @"C:\YourFolderPath";
        DirectoryInfo Dir = new DirectoryInfo(PATH);
        FileInfo[] FileList = Dir.GetFiles("*.xls*", SearchOption.AllDirectories );
        foreach (FileInfo FI in FileList )
        {
        Console.WriteLine(FI.FullName);
        }
        }
        catch (Exception ex)
        {
        Console.WriteLine(ex.Message );
        }

在 foreach 里面你可以放任何你想要的代码