繁体   English   中英

如何指定打开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
如果您不希望它在没有匹配文件的情况下引发异常,请用FirstOrDefault替换Single并添加一个null检查


编辑

要获取最新文件:

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()调用未返回任何内容,则需要进行处理。

我了解您正在一个文件夹中查找所有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中,您可以放置​​任何所需的代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM