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

时间:2015-05-13 14:39:58

标签: c# excel datatable oledbconnection

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

{{1}}

我想知道excel文件所在的文件夹是否是唯一的excel文件,如果有办法在该文件夹中的任何(仅)excel文件中指定路径库并将其插入字符串中路径?

3 个答案:

答案 0 :(得分:2)

你可以这样做

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支票

修改

要获取最新文件:

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

答案 1 :(得分:2)

从我从您的问题中收集到的内容,您希望获得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()调用没有返回任何内容,则需要处理它。

答案 2 :(得分:1)

我知道您正在寻找一个文件夹中的所有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中你可以放任何你想要的代码