我如何指定打开excel文件的字符串路径,知道excel文件的文件名将始终更改或至少将该文件夹中最近保存的excel文件插入字符串路径?例如,
{{1}}
我想知道excel文件所在的文件夹是否是唯一的excel文件,如果有办法在该文件夹中的任何(仅)excel文件中指定路径库并将其插入字符串中路径?
答案 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中你可以放任何你想要的代码